开发者

Threading UI Update (not the invoke required question)

开发者 https://www.devze.com 2022-12-17 03:55 出处:网络
I have a case where I am getting lots of sockets requests coming in. I would like to update the UI 3 seconds after the last socket request has come in. E.g If socket request comes in and the previous

I have a case where I am getting lots of sockets requests coming in. I would like to update the UI 3 seconds after the last socket request has come in. E.g If socket request comes in and the previous one was only 2 seconds ago it should clear the UI Update and start waiting for 3 seconds.

Notes: Each Socket Request comes in on a diff开发者_开发技巧erent thread.


You can update the UI in a System.Timers.Timer (set the timer's SynchronizingObject property to your form) with a three-second interval and reset it whenever you receive a request.

EDIT: On further thought, you should use a System.Threading.Timer, which is less convenient then Timers.Timer but is more lightweight, and is completely thread-safe. In its callback, you'll have to call form.BeginInvoke to switch to the UI thread.

Each time you receive a request, you would run timer.Change(3000, -1).


Use a System.Timers.Timer. Each time a request comes in you reset the timer for 3 seconds. When the timer goes off update the UI. The timer has to be accessed by every thread so you will need to protect it with a mutex.

0

精彩评论

暂无评论...
验证码 换一张
取 消