C# 无法引用非静态字段

C# 无法引用非静态字段,c#,.net,multithreading,C#,.net,Multithreading,基本上,当这个过程是非静态的时,我不能运行线程。如果它是静态的,我就无法访问GUI的表单 如何在非静态过程上运行线程 Thread check = new Thread(refreshInfo); private void refreshInfo() { if (Program.loggedIn == true) { btnLogIn.Visible = false; btnRegister.Vis

基本上,当这个过程是非静态的时,我不能运行线程。如果它是静态的,我就无法访问GUI的表单

如何在非静态过程上运行线程

Thread check = new Thread(refreshInfo);

    private void refreshInfo()
    {
        if (Program.loggedIn == true)
        {
            btnLogIn.Visible = false;
            btnRegister.Visible = false;

            lblLoggedIn.Text = "Logged in";

            btnUserSettings.Enabled = true;
        }
        else
        {

        }
    }
错误

错误12字段初始值设定项无法引用非静态字段、方法或属性“BLHClient.BLHClient.refreshInfo()”


您需要在构造函数中分配
线程
。愚蠢的错误。我以前修过这个。谢谢,罗布。这个代码会崩溃的。不能从后台线程修改UI控件。为什么要使用原始线程而不是使用任务和
async/await
?您可以执行任何需要的异步处理,并使用一个简单的
await runmyasynchmethod()返回UI线程调用Wait RunMyAsyncMethod如何工作?你能给我一个辅导贴吗@PanagiotisKanavosUse MVVM与绑定和INotifyPropertyChanged-这将更干净,实现起来更快。