如何在不使用类的情况下在 statick 方法中调用非静态任务


嗨,大家好,

我想知道是否有任何解决方案可以在静态方法中调用非静态任务,例如这是我的非静态任务

C#
public async Task login(string user, string password)
        {

        }

这是我的静态方法

C#
public static void checker(string email, string password)
       {
           while (true)
           {
               login(email, password);
           }
       }

但它不能被调用,我不想为它们使用类。

我尝试过的:

………………………………………………

解决方案1

您可以通过在静态方法中使用一些全局对象或一些本地对象来做到这一点。

但据我了解,C# 也可以在实例方法上启动线程。 阅读 微软文档

PS:通过回答你的问题,我学到了一些:-)

解决方案2

不,不直接。
非静态成员始终需要一个对象实例才能使用,因为这意味着它可以接触实例数据。 如果没有对象引用,这是不可能的。

它在 KarstenK 提供的示例中起作用,因为成员方法包装在委托中。
这就是你可以做的:传递代表。
但是您仍然必须以某种方式传递它们,您不能在不创建委托的情况下“调用”随机实例方法。 除非你使用全局对象。

但老实说,在这种情况下,你的问题表明你正在试图解决错误的问题。 这可能表明您的“登录”方法不应该是实例方法。 或者,如果确实需要,您不应该尝试避免使用该实例。

コメント

タイトルとURLをコピーしました