在WPF程序中使用多线程技术

来源:互联网 发布:实时数据库 开源 编辑:程序博客网 时间:2024/06/06 02:22

在WPF应用程序中使用多线程的方式与Windows Forms很类似,区别在于,如果需要更新主线程UI上面的元素,需要用一个特殊的方法(this.Dispatcher.Invoke)

下面是一个简单的范例,演示了如何执行一个简单的方法,它使用了callback的机制进行多线程异步执行。

            Func<string> func = new Func<string>(() =>            {                Thread.Sleep(5000);                return "Hello,world";            });            AsyncCallback callback = new AsyncCallback((i) =>            {                this.Dispatcher.Invoke(                    new Action(() =>                    {                        this.Title = func.EndInvoke(i);                    }));            });            func.BeginInvoke(callback, null);
.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }