我有一个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线程的情况下进入睡眠状态呢?
谢谢!
发布于 2013-03-30 19:51:32
你试过了吗?Sleeping thread inside a Task won't freeze your GUI,但是它会使当前的后台线程进入睡眠模式,您的UI将始终保持响应-
Task.Factory.StartNew(() =>
{
Thread.Sleep(5000000); // this line won't make UI freeze.
});
Thread.Sleep(5000000); // But this will certainly do.发布于 2013-03-31 00:34:13
由于您已经在使用async,所以只需使用异步方式即可:
var words = await Task.Run(async () =>
{
StringMgr.TextToUniqueWords(File.ReadAllText(filename));
await Task.Delay(TimeSpan.FromSeconds(10));
});然而,我怀疑睡眠是你试图解决的实际问题的错误解决方案。如果你想发布另一个问题与你的实际问题,你可能会找到一个更好的解决办法。
https://stackoverflow.com/questions/15722400
复制相似问题