簡體   English   中英

C#事件處理訂單

[英]C# Event Handling Order

該場景是緩沖區上的事件,當有可用於收集的數據時,該事件通知感興趣的類。 一旦將新數據寫入緩沖區,就會觸發該事件。 當觸發此事件時,事件的委托(在感興趣的類中)開始從緩沖區讀取數據。

我的問題是,如果事件再次被觸發(在方法完成從緩沖區讀取所有數據之前),讀取方法是“重置”還是事件會等待方法在再次調用之前完成讀取數據?

如果在另一個線程上觸發該方法,則只能在方法完成讀取之前再次觸發該事件。 然后(默認情況下)將在該單獨的線程中再次調用事件處理程序。 沒有現有方法被“重置”的概念,也不會等待已經運行的處理程序在再次觸發之前完成。

當然,您可能會更改處理程序的工作方式或事件的觸發方式 - 可能確保僅使用某種事件隊列從單個線程調用事件處理程序。 我們不可能知道這是否適合你的情況。

如果在不同的線程上,它也會並行執行(並行執行) - 否則執行將會阻塞。

除非你在你的代碼中放置了Application.DoEvents() (這是一件可怕的事情),否則你的事件不會被打斷。

在多線程場景中,它們可能並行運行。 我不是同時使用多個線程和事件,所以我不能真正說太多,但看起來Jon很好地回答了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM