方法一:使用DependencyObject.Dispatcher.BeginInvoke 方法
private void btnThread1_Click(object sender, RoutedEventArgs e)
{
new Thread(() => {
this.Dispatcher.BeginInvoke(() => { MessageBox.Show("Hello World"); });
}).Start(); }
方法二:使用SynchronizationContext 对象
private void btnThread1_Click(object sender, RoutedEventArgs e)
{
SynchronizationContext context = SynchronizationContext.Current;
new Thread(() => { context.Post((state) => { MessageBox.Show("Hello World"); }, null); }).Start();
}
方法三:System.Windows.Deployment
new Thread(() => {
new Thread(() => {
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => { MessageBox.Show("Hello World"); });
}).Start();
}).Start();