我有主线程(MainThread),我在其上创建新的Thred(让我们称它为NewThread)。在NewThread中,我调用了一个想要为MainThread调用某个方法的方法。C#线程问题
问题是,当我从MainThread调用NewThread.Join()时,NewThread的Invoke方法无法完成/终止(并且整个应用程序永远冻结...),因为MainThread正在等待NewThread终止...
......就像恶性循环......任何想法如何解决它?我需要有可能从MainThread终止/中止NewThread,并确保NewThread不再存在。
我希望我足够具体。
主线程:
void method()
{
if(currentthread!=null)
{
currentthread.Join();
currentthread=null;
}
sth...
Backgroundworker worker = new Backgroundworker();
worker.DoWork += delegate (...)
{
currentthread=Thread.CurrentThread;
Func();
}
....
}
NewThread:
delegate void FuncDel();
void Func()
{
if(MainThread.InvokeRequired)
{
FuncDel funcD = new FuncDel();
MainThread.InvokeRequired(funcD);
return;
}
....
}
我们需要看你的代码。 – Woot4Moo
你会发布你的代码吗? – ChrisNel52
你用什么技术在MainThread上调用你的方法?是某种Control.Invoke或类似的? – michalczerwinski