多语言展示
当前在线:1765今日阅读:26今日分享:39

C#多线程问题的解决

多线程这个问题,是我们在编程的过程中经常碰到的一些问题,如果解决不好,就会 影响程序运行的效率。使用多线程的好处主要是:可以使用线程将代码同其他代码隔离,提高应用程序的可靠性;可以使用线程来简化编码;可以使用线程来实现并发执行。
工具/原料

vs 2010

方法/步骤
1

就比如我在WPF 编程的时候,遇到这样的一个报错,The calling thread cannot access this object because a different thread owns it.原因是我使用了每隔几秒钟使用一次该程序,该程序不断的被使用,导致不同噢乖的线程在使用它。

2

我这边没有使用多线程,所以会报出这样的错误,最后我到网上去搜索了一下,针对这一的程序我该如何处理,果不其然,找到了处理的方法,  Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Send,new Action(delegate()                                    this.datagrid.ItemsSource = null;                   this.page.ShowPages(this.datagrid, table, MaxPageNum);                }));

3

发现这样的话,还是会报错,这就说明这个异步调用还是没有实现我的这个程序的多次调用,原因还是因为非UI线程访问了UI控件,这个时候,又陷入迷糊了。

4

之后我又上网搜索关于WPF线程的问题,给出的解释是这样的:WPF应用程序都至少有两个线程,一个用于UI绘制,其隐藏于后台,另一个用于管理UI,包括用响应用户输入执行后台代码等

5

最后我通过不断的搜索了一个关于Application对象的使用,它也是用于多线程调用的,只是它的搜索范围更广。这个例子是这样的:System.Windows.Application.Current.Dispatcher.Invoke(new System.Action(() =>                    {                        IPrism.progressBar.Show();                    }));

6

然后我就用到我的程序中,这里更改很简单,把代码中的“Dispatcher.CurrentDispatcher”改成“Application.Current.Dispatcher”应该就可以了。然后通过运行,这个问题解决了,也可以不断的刷新了。

推荐信息