首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使子线程在WPF应用程序中不冻结UI线程而睡眠?

如何使子线程在WPF应用程序中不冻结UI线程而睡眠?
EN

Stack Overflow用户
提问于 2013-03-30 19:12:45
回答 2查看 11.8K关注 0票数 2

我有一个WPF应用程序,我有单独的线程运行以完成任务,我想让当前的线程进入睡眠状态,

Thread.CurrentThread.Sleep(10000)

我确实在Java中看到了它,但在C#中却没有。我知道我只有一个UI线程,所以如果我使用Thread.Sleep(10000),我的UI线程将被阻塞。我正在使用异步,并等待从.NET 4.5。

变量Task.Factory.StartNew=等待Task.Factory.StartNew(() => {=>) //我希望能够在没有UI冻结的情况下睡眠这个线程10秒 });

那么,如何使子线程在不冻结WPF应用程序中的UI线程的情况下进入睡眠状态呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-30 19:51:32

你试过了吗?Sleeping thread inside a Task won't freeze your GUI,但是它会使当前的后台线程进入睡眠模式,您的UI将始终保持响应-

代码语言:javascript
复制
        Task.Factory.StartNew(() =>
            {
                Thread.Sleep(5000000); // this line won't make UI freeze.
            });
        Thread.Sleep(5000000); // But this will certainly do.
票数 3
EN

Stack Overflow用户

发布于 2013-03-31 00:34:13

由于您已经在使用async,所以只需使用异步方式即可:

代码语言:javascript
复制
var words = await Task.Run(async () =>
{
  StringMgr.TextToUniqueWords(File.ReadAllText(filename));
  await Task.Delay(TimeSpan.FromSeconds(10));
});

然而,我怀疑睡眠是你试图解决的实际问题的错误解决方案。如果你想发布另一个问题与你的实际问题,你可能会找到一个更好的解决办法。

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

https://stackoverflow.com/questions/15722400

复制
相关文章

相似问题

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