调用线程必须为 STA,因为许多 UI 组件都需要
2015-04-30 11:02
399 查看
refs:
http://blog.csdn.net/leftfist/article/details/41747255?utm_source=tuicool
WPF中,代码中准备控制控件内容时,有时会报错:
调用线程必须为 STA,因为许多 UI 组件都需要
我知道,在winform下面,使用多线程时,控件的值读取是可以的,但如果要更改,那么就必须进行一些特别的处理。难道在WPF中,也一样吗?
首先,WPF中,当报上面那个错误时,代码可以改成类似以下:
[csharp]
view plaincopy
void authOK(AuthorizationResult auth)
{
App.Current.Dispatcher.Invoke((Action)(() =>
{
labInfo.Content = "登录成功";
btnLogin.IsEnabled = true;
labUser.Content = auth.User.Name;
labToken.Content = auth.AccessToken;
loginWin.Close();
client.Close();
}));
}
深入阅读:
https://msdn.microsoft.com/en-us/magazine/cc163328.aspx
补充:
private void cmdBT_Click(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(UpdateTextRight);
thread.Start();
}
private void UpdateTextRight()
{
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(ThreadStart) delegate()
{
txt.Text = "Here is some new text.";
}
);
}
以及:
BackgroundWorker
http://blog.csdn.net/leftfist/article/details/41747255?utm_source=tuicool
WPF中,代码中准备控制控件内容时,有时会报错:
调用线程必须为 STA,因为许多 UI 组件都需要
我知道,在winform下面,使用多线程时,控件的值读取是可以的,但如果要更改,那么就必须进行一些特别的处理。难道在WPF中,也一样吗?
首先,WPF中,当报上面那个错误时,代码可以改成类似以下:
[csharp]
view plaincopy
void authOK(AuthorizationResult auth)
{
App.Current.Dispatcher.Invoke((Action)(() =>
{
labInfo.Content = "登录成功";
btnLogin.IsEnabled = true;
labUser.Content = auth.User.Name;
labToken.Content = auth.AccessToken;
loginWin.Close();
client.Close();
}));
}
深入阅读:
https://msdn.microsoft.com/en-us/magazine/cc163328.aspx
补充:
private void cmdBT_Click(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(UpdateTextRight);
thread.Start();
}
private void UpdateTextRight()
{
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(ThreadStart) delegate()
{
txt.Text = "Here is some new text.";
}
);
}
以及:
BackgroundWorker
相关文章推荐
- WPF 之 调用线程必须为 STA,因为许多 UI 组件都需要
- 调用线程必须为 STA,因为许多 UI 组件都需要
- 调用线程必须为 STA,因为许多 UI 组件都需要(转载)
- 调用线程必须为 STA,因为许多 UI 组件都需要
- 调用线程必须为 STA,因为许多 UI 组件都需要
- 调用线程必须为 STA,因为许多 UI 组件都需要
- 调用线程必须为 STA,因为许多 UI 组件都需要
- 调用线程必须为 STA,因为许多 UI 组件都需要
- 调用线程必须为 STA,因为许多 UI 组件都需要
- WPF--调用线程必须为 STA,因为许多 UI 组件都需要(转载)
- 调用线程必须为 STA,因为许多 UI 组件都需要
- WPF 调用线程必须为 STA,因为许多 UI 组件都需要
- 调用线程必须为STA,因为许多UI组件都需要。
- wpf 调用线程必须为sta 因为许多ui组件都需要
- 4.5.3 Async耗时操作必须由子线程完成,更新UI需要由主线程完成
- C#“必须先将当前线程设置为单个线程单元(STA)模式方可进行OLE调用”异常解决方案
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式