我在主线程中创建了新线程
list.add(meMap.values());
arrayAdapter.notifyDataSetChanged();
执行 new Thread(() =>
{
// my code
System.Diagnostics.Debug.WriteLine("my code completed");
Application.Current.Dispatcher.Invoke(MyMethod, DispatcherPriority.ContextIdle);
}).Start();
后,调用my code
需5-8秒
我在输出窗口中看到,给定的波纹管发生几次后才调用MyMethod
MyMethod
要解决此问题,我厌倦了使用The thread 0x2954 has exited with code 259 (0x103)
中止当前线程,但是它不能解决我的问题。我想在Thread.CurrentThread.Abort();
完成后立即致电MyMethod
。
答案 0 :(得分:1)
创建线程时,在代码实际运行之前会进行大量处理。如果您需要代码提高响应速度,请查看线程池(Task
基本上是同一件事)。
请记住,即使使用线程池,也可能需要花费一些时间才能开始工作,但是它应该比使用全新线程开始要短得多。
对于您的代码,您正在执行的操作是启动一个线程(这可能需要很长时间),然后要求您的线程将控制权传递回UI线程,而该UI线程本身可能正忙于做其他事情而无法运行您的代码,直到免费。