【问题标题】:How to sleep/delay background worker thread如何休眠/延迟后台工作线程
【发布时间】: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


【解决方案1】:

如果您想调试后台任务,请检查此参考:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj542416.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2015-01-01
    • 2023-03-31
    相关资源
    最近更新 更多