//声明一个线程:
public Thread thdAddFile;
//开启新线程:
thdAddFile = new Thread(new ThreadStart(RunAddFile));
thdAddFile.Start();
//创建一个要让新线程运行的方法:
//此程序是一个复制文件并体现在进度条的进度示例:
public void RunAddFile()
{
//判断进度条控件是否被主线程调用。
if (this.progressBar1.Dispatcher.CheckAccess())
{
CopyFile(tb_SourceFileName.Text, newdir, 1024, progressBar1);
thdAddFile.Abort();
}
else
{
this.progressBar1.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate
{
CopyFile(tb_SourceFileName.Text, newdir, 1024, progressBar1);
thdAddFile.Abort();
});
}
}
Dispatcher.Inovoke提供豐富的多型可以使用,透過指定的DispatcherPriority、delegate action與指定的參數值。
呼叫Invoke方法之後,它會將指定在UI Thread上執行的delegate action排入Dispatcher佇列中。使用該方法可確保UI Thread會進行封鎖,直到在 UI Thread上執行該工作為止。