Multithreading 如何将线程停止在此线程c++/cli

Multithreading 如何将线程停止在此线程c++/cli,multithreading,c++-cli,command-line-interface,Multithreading,C++ Cli,Command Line Interface,我有一个从表单加载开始的线程: myThread = gcnew Thread( gcnew ThreadStart( this, &Form1::ThreadFunction1 ) ); myThread->Start(); 在这个新线程中,我需要在这个线程函数中停止它: public ref class MyThreadClass { private: Form1^ myFormControl1; public: void

我有一个从表单加载开始的线程:

            myThread = gcnew Thread( gcnew ThreadStart( this, &Form1::ThreadFunction1 ) );
            myThread->Start();
在这个新线程中,我需要在这个线程函数中停止它:

public ref class MyThreadClass
{
 private:
Form1^ myFormControl1;

public:

void Run()
{
... //some operations
            Thread::Suspend();
}
};

但我得到了一个编译器错误:“class::function”:非法调用非静态成员函数。如何解决这个问题?

您使用的线程库是什么?使用名称空间System::Threading;Suspend()是一个实例方法,而不是静态方法。您不能再使用它了,它被宣布为[过时],因为许多程序员错误地使用了它。和您正在做的一样,挂起线程很可能会导致死锁。请使用适当的同步对象。
Thread.CurrentThread.Suspend()
将按照您的要求执行。正如其他人所说,使用它是自找麻烦——你到底想实现什么?如果您想“停止”线程,因为在终止它时,挂起不是解决方案:只需从函数返回即可。如果您需要等待某个事件,请遵循@HansPassant建议并使用其他一些同步机制。