首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到Application.Current.Dispatcher的c#新线程(()需要很长时间

到Application.Current.Dispatcher的c#新线程(()需要很长时间
EN

Stack Overflow用户
提问于 2018-07-05 21:15:07
回答 1查看 193关注 0票数 0

我在主线程中创建了新的线程

代码语言:javascript
复制
     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之前,会出现以下几行

代码语言:javascript
复制
The thread 0x2954 has exited with code 259 (0x103)

为了解决这个问题,我尝试使用Thread.CurrentThread.Abort();中止当前的线程,但它不能解决我的问题。我想在my code完成后立即调用MyMethod

EN

回答 1

Stack Overflow用户

发布于 2018-07-05 21:17:52

创建线程时,在代码实际运行之前会进行大量处理。如果你需要你的代码有更好的响应性,看看线程池(Task基本上是一样的)。

请记住,即使使用线程池,也可能需要一小段时间才能启动,但这应该比启动一个全新的线程少得多。

对于您的代码,您所做的是启动一个线程(这可能需要很长时间),然后要求您的线程将控制传递回UI线程,UI线程本身可能正忙于做其他事情,并且在空闲之前无法运行您的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51192301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档