我有一個庫,它使用來自異步tcp操作的事件數據。 雖然我得到跨線程操作異常,但在UI中收到它們之後在控件中使用這些數據時。如何在圖書館的消費者獲得數據顯示在他的控制之前解決這個問題。所以基本上我需要把數據放到自己的線程中使用庫?如何從另一個線程安全地使用數據控件?
用於具有鏈接文件的緊湊框架的相同代碼。
我在圖書館內使用這個方法有一個幫助控制說,如果調用是必需的,但它不工作。
public static void InvokeIfNecessary(Control control, Action setValue)
{
if (control.InvokeRequired)
{
control.Invoke(setValue);
}
else
{
setValue();
}
}
使用事件向使用該庫的用戶提供數據的示例代碼。
if (OnClientChangeConnection != null) SafeData.InvokeIfNecessary(_helpControl,() => OnClientChangeConnection(ConnectedClients, requestClientInfo)); // ConnectedClients is an integer and requestClientInfo is a List<ClientInfo> class type.
謝謝。
爲什麼它不工作的一類?怎麼了? – SLaks 2011-05-16 20:36:00
我不明白它,它只是從來沒有進入control.Invoke(setValue)如果。該庫用於異步TCP通信目的。奇怪的是在Compact Framework上我沒有問題。 – 2011-05-16 20:38:51
你在調試器中看到什麼? – SLaks 2011-05-16 21:01:02