[英]Windows phone C# updating text to GUI mainpage.xaml.cs?
I'm trying to update text from thread to main GUI thread, but exception thrown because it's in different thread. 我正在尝试将文本从线程更新到主GUI线程,但抛出异常,因为它在不同的线程中。 I try to use Dispatcher.CheckAccess(), BeginInvoke() but this project is not Silverlight or WPF.
我尝试使用Dispatcher.CheckAccess(),BeginInvoke()但该项目不是Silverlight或WPF。 I try the old style InvokeRequired, Invoke(), but these are not available.
我尝试旧样式InvokeRequired,Invoke(),但这些都不可用。
StartTest.cs: StartTest.cs:
public StartTest(MainPage mainPage)
{
mainPageObj = mainPage;
}
public async Task RunTest(string testCase)
{
await Task.Run(() => RunTestCase(testCase));
}
public bool RunTestCase(string testcase)
{
switch (testcase)
{
case "testcase1":
int i = 0;
while (i < 10000)
{
i++;
}
mainPageObj.UpdatePassFail(true);//update the main GUI
break;
case "testcase2":
mainPageObj.UpdatePassFail(false);//update the main GUI
break;
}
return false;
}
Mainpage.xaml.cs: MainPage.xaml.cs中:
public void UpdatePassFail(bool pass)
{
try
{
if (pass == true)
{
passCount++;
passFailCount = passCount + failCount;
textBlock_passTotal.Text = passCount.ToString();
textBlock_passFailTotal.Text = passFailCount.ToString();
}
else if (pass == false)
{
failCount++;
passFailCount = passCount + failCount;
textBlock_failTotal.Text = failCount.ToString();
textBlock_passFailTotal.Text = passFailCount.ToString();
}
}
catch(Exception error)
{
textBlock_tapInfo.Text = error.Message;
}
}
Update: 更新:
After putting the below statements inside the first if-statement, the updated data is shown in main GUI. 将以下语句放在第一个if语句中后,更新的数据显示在主GUI中。
Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
textBlock_passTotal.Text = passCount.ToString();
textBlock_passFailTotal.Text = passFailCount.ToString();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.