spa*_*opt 1 c# backgroundworker windows-phone-8
我想实时显示(例如每1秒更新一次)某些温度到我的程序界面.
为此,我相信我将需要在后台工作程序中运行一些代码,以便主程序不会被阻止.我的问题是,是否可以设置TextBlock背景工作者的文本,如果可以,则如何设置.
这是基本的想法:
backgroundworker
{
while(true)
{
//reading and updating temperatures
//.....
}
}
Run Code Online (Sandbox Code Playgroud)
BackgroundWorker 已经内置支持报告当前工作进度,这听起来就像你正在做的那样:
var worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += (s, args) =>
{
while (true)
{
Thread.Sleep(1000);//placehodler for real work
worker.ReportProgress(0, "Still working");
}
};
worker.ProgressChanged += (s, args) =>
{
textBox1.Text = args.UserState as string;
};
worker.RunWorkerAsync();
Run Code Online (Sandbox Code Playgroud)
通过利用内置支持,您可以让后台工作程序处理到UI线程的编组.(它将确保除了DoWork在UI线程中运行之外的所有事件.)
这还具有将UI逻辑与业务逻辑分离的优点,而不是嵌入用于在执行业务工作的代码中操纵UI的代码.