C# 使用非静态方法的线程

C# 使用非静态方法的线程,c#,multithreading,C#,Multithreading,我正试图编写一个简单的工具(它只包含一个类),但我坚持使用线程。 我不知道如何用非静态方法运行线程 我的windows窗体代码如下所示: public partial class Form1 : Form { //--Some methods here--// void login(); void start(); void refresh(); //--Button events--// private void button1_Click() {

我正试图编写一个简单的工具(它只包含一个类),但我坚持使用线程。 我不知道如何用非静态方法运行线程

我的windows窗体代码如下所示:

public partial class Form1 : Form
{
   //--Some methods here--//
   void login();
   void start();
   void refresh();

   //--Button events--//
   private void button1_Click()
   {
       //I want to start thread here
       //Something like Thread t = new Thread(new ThreadStart(refresh));
       //t.Start();
   }
}
有了计时器,这个线程应该每x秒调用一次refresh(),但计时器并没有问题。 我的线程出现错误:

A field initializer cannot reference the non-static field, method, or property.

如果您使用定时器进行刷新,那么我认为您不需要单独的线程来刷新

或者,如果要异步调用“从计时器刷新”回调,则可以创建一个操作委托并对其调用BeginInvoke

Action ac = new Action(this.refresh);
ac.BeginInvoke(null, null);
编辑: 如果使用System.Threading.Timer,则它本身在另一个线程上运行。因此,不建议从此计时器回调启动线程。选中。

在button1\u click()函数中,您可以使用lambda在另一个线程中调用刷新方法:

new Thread(
        () =>
        {
            refresh();
        }
        ).Start();

我很确定这样会很好地工作

您没有发布生成此编译错误的代码。看这里,我只是在学习编程,您能解释一下为什么不使用单独的线程会更好吗?我希望每隔x秒在这个线程上执行一些操作(它们将花费一些时间),而其他线程将检查/执行其他操作。