Cod*_*gry 4 .net c# wpf multithreading
在C#中,我有几个工作,我需要将其反映到UI中.更新进度条,将项添加到列表等.
我第一次尝试这样做时,我用锁来准备一切,以确保每个给定时刻只有一个线程访问UI,但我得到了一个例外.所以我了解到我需要使用它Dispatcher.Invoke来访问和更改UI元素.将每个UI更改包含在调用中是非常麻烦的,但我可以处理它.
Dispatcher.Invoke呼叫或内部完成?所以我想知道我是否需要用锁添加另一层保护......人脑将无法处理200次更新/秒.这只会减慢你的用户界面,而不会让你获得任何东西.
相反,制作一个计时器,每次轮询状态,比如200ms.这将足够快(5次更新/秒)不明显.
无需锁定调度程序,它在内部处理.但是你应该将你的任务专门用于计算,而不是从他们那里操纵UI.像我说的那样实现一个计时器,并使用一些标准的跨线程通信方式从UI线程中检索当前状态.