我在主线程中创建了新的线程
new Thread(() =>
{
// my code
System.Diagnostics.Debug.WriteLine("my code completed");
Application.Current.Dispatcher.Invoke(MyMethod, DispatcherPriority.ContextIdle);
}).Start();执行my code之后,调用MyMethod需要5-8秒的时间
我在输出窗口中看到,在调用MyMethod之前,会出现以下几行
The thread 0x2954 has exited with code 259 (0x103)为了解决这个问题,我尝试使用Thread.CurrentThread.Abort();中止当前的线程,但它不能解决我的问题。我想在my code完成后立即调用MyMethod。
发布于 2018-07-05 21:17:52
创建线程时,在代码实际运行之前会进行大量处理。如果你需要你的代码有更好的响应性,看看线程池(Task基本上是一样的)。
请记住,即使使用线程池,也可能需要一小段时间才能启动,但这应该比启动一个全新的线程少得多。
对于您的代码,您所做的是启动一个线程(这可能需要很长时间),然后要求您的线程将控制传递回UI线程,UI线程本身可能正忙于做其他事情,并且在空闲之前无法运行您的代码。
https://stackoverflow.com/questions/51192301
复制相似问题