wpf使用多线程后界面一样无响应
这个问题跟winform里的多线程界面卡是同一个问题,但是不能使用winform下的办法来解决。
先看代码
- C# code
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <Button Height="23" Margin="95,0,108,45" Name="button1" VerticalAlignment="Bottom" Click="button1_Click">Button</Button> <TextBlock Margin="38,40,19,88" Name="textBlock1" /> </Grid></Window>
- C# code
public partial class Window1 : Window { private delegate void DeleDoWork(); public Window1() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { DeleDoWork work = new DeleDoWork(DoWork); Dispatcher.BeginInvoke(work); } private void DoWork() { for (int i = 0; i < 100; i++) { textBlock1.Text = i.ToString(); Thread.Sleep(200); } } }
当单击按钮后,窗口就无响应了。
请问有什么办法可以解决?
[解决办法]