【发布时间】:2015-05-21 09:15:08
【问题描述】:
我正在开发一个 Windows 手机应用程序。我需要每隔一分钟向 Web 服务发送一个请求,而不会中断前端。所以我创建了一个BackgroundWorker。如果我得到数据,我必须在不同的条件下运行四种方法。在每个方法中都包含一个声音文件(长度为 5 秒)。当我运行程序时,如果我调用其中两种方法,声音就会混合在一起。所以我试着让那个后台工作线程睡觉。但我找不到CurrentThread 实例的睡眠方法。当我使用Thread.Sleep(5000); 时,我无法访问前端,直到线程唤醒(5 秒)。如何休眠后台线程?或者如何延迟到第一个声音结束?
提前致谢。
以下方法之一。
public void NotificationForNewjob()
{
Stream stream = TitleContainer.OpenStream("Assets/NewJob.wav");
SoundEffect effect = SoundEffect.FromStream(stream);
FrameworkDispatcher.Update();
effect.Play();
//bool x = Thread.CurrentThread.IsBackground;
//Thread.Sleep(5000);
//Thread.CurrentThread.
//Setting.IsDownload = false;
}
【问题讨论】:
-
您是否在后台线程上调用
NotificationForNewJob?因为我们在您的代码中看不到它。 -
当我检查 Thread.CurrentThread.IsBackground 属性 x 变为 true 时,在上述方法中是的。
-
如果你使用的是 Windows Phone,你应该使用异步等待而不是线程。
Thread.Sleep真的很贵。请改用await Task.Delay。
标签: c# multithreading windows-phone-8.1