奇了个怪了
// 在此处添加事件处理程序实现。
progressBar.Dispatcher.BeginInvoke(new SendHandle(Send));
delegate void SendHandle(); private void Send()
{
int i = 1;
while (true)
{
textBox1.Text = DateTime.Now.ToString("hh:mm:ss fff");
}
} 哪里错了
// 在此处添加事件处理程序实现。
progressBar.Dispatcher.BeginInvoke(new SendHandle(Send));
delegate void SendHandle(); private void Send()
{
int i = 1;
while (true)
{
textBox1.Text = DateTime.Now.ToString("hh:mm:ss fff");
}
} 哪里错了
死循环了,你加点其他处理吧这是WPF吧
那WPF的多线程怎么写啊 我看了下他和WINFORM的不一样
所以无法中断的耗时操作(也就是没有机会在中间插入Application.DoEvents。WPF不直接支持这个调用)要从窗口所属线程移出去
你这里却把操作发送到progressBar所在的线程。
只是发送过去也没什么问题,如果你要从其他线程访问progressBar必须这样做,关键是你在里面while(true),那肯定要“卡死”你把Dispatcher.BeginInvoke看成Control.BeginInvoke就行了
这里WPF和WinForm是差不多的
textBox1.Text = DateTime.Now.ToString("hh:mm:ss fff");
后加个阻塞
Thread.Sleep(100);
C#刚看了委托 跟C++的函数指针有一比
如果Dispatcher对应的线程和当前线程不是同一条线程就会形成对当前线程的异步
this.Dispatcher.BeginInvoke这样做有点画蛇添足,把本来就会在当前线程执行的代码发送到当前线程用于异步操作的是Delegate.BeginInvoke,使用系统线程池中的一条线程执行后面的函数