[問題] 請問要等到UART收到IRQ再往下跑的寫法

看板C_Sharp (C#)作者 (GreenLinux)時間2周前 (2024/12/29 21:31), 編輯推噓3(305)
留言8則, 3人參與, 2周前最新討論串1/1
抱歉各位, 請問在 C# 要怎樣可以做以下情形: public void Test1() { do_something1(); ..... while(uart0_IRQ); do_something2(); } 就是指做完 do_something1() 後, 我在等收到uart0的 Interrupt後 再往下做do_something2(); 原本我寫好UART0 的Rx ReceiveData() func: public bool uart0_IRQ = false; public void ReceiveData(object s, SerialDataReceivedEventArgs e) { uart0_IRQ = true; } 但這樣Test1() 好像永遠都收不到這個 uart0_IRQ 變成true. 我不想將 do_something2() 及後面的流程放在 ReceiveData()內, 因為 Interrupt Func不該做太耗時的工作. 請問正確應該要怎樣寫??? 謝謝.. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.44.237 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1735479060.A.5EF.html

12/30 00:52, 2周前 , 1F
關鍵字應該是委派delegate
12/30 00:52, 1F

12/30 02:30, 2周前 , 2F
資料先扔進queue後交給task執行後面要跑的程式
12/30 02:30, 2F

12/30 02:31, 2周前 , 3F
task那邊再從queue拉出來繼續
12/30 02:31, 3F

12/30 08:51, 2周前 , 4F
謝謝兩位,我google一下相關資料,謝謝.
12/30 08:51, 4F

12/30 13:38, 2周前 , 5F
@ian90911 請問那裡要加delegate?
12/30 13:38, 5F

12/30 16:16, 2周前 , 6F
就你其實可以寫一個自訂類別來包裝想給主程序訂閱的事件
12/30 16:16, 6F

12/30 16:19, 2周前 , 7F
我猜你是寫winform,怕中斷UIThread也可用Task做非同步
12/30 16:19, 7F

12/30 16:30, 2周前 , 8F
@ian90911 是的, 是WinForm
12/30 16:30, 8F
文章代碼(AID): #1dSKyKNl (C_Sharp)
文章代碼(AID): #1dSKyKNl (C_Sharp)