线程UI更新(不是调用所需的问题)

时间:2010-01-24 04:16:26

标签: c# .net user-interface multithreading

我有一个案例,我收到很多套接字请求。我想在最后一个套接字请求进入3秒后更新UI。例如,如果套接字请求进来而前一个请求只有2秒它应该清除UI更新并开始等待3秒钟。

注意: 每个套接字请求都在不同的线程中。

2 个答案:

答案 0 :(得分:1)

您可以在System.Timers.Timer(将计时器的SynchronizingObject属性设置为您的表单)中以三秒的间隔更新UI,并在收到请求时重置它。

编辑:进一步考虑,您应该使用System.Threading.Timer,这比Timers.Timer更不方便,但更轻量级,并且完全是线程安全的。在其回调中,您必须调用form.BeginInvoke切换到UI线程。

每次收到请求时,都会运行timer.Change(3000, -1)

答案 1 :(得分:0)

使用System.Timers.Timer。每次请求进入时,您都会将计时器重置3秒钟。当计时器熄灭时更新UI。每个线程都必须访问计时器,因此您需要使用互斥锁保护它。