none
serialport DataReceived問題請教 RRS feed

  • 問題

  • 自己寫了兩個小程式模擬Com Port資料互傳,

    中間利用DataReceived抓取互傳的資料,

    但是當我將Com Port close後再open時,

    傳遞資料時,DataReceived就會觸發兩次,

    第一次是我傳遞的值,第二次是空值,

    是因為DataReceived是不同程序再處理嗎? Com Port就算被close後,還是存在?

    請教應該如何處理才是正確的?

    自己又試了一下,當我Com Port關掉又開多次,DataReceived就會累加多次。

    2011年7月26日 上午 06:55

解答

所有回覆

  • 感覺是多次註冊Event Handler

    沒有呼叫Dispose的話就不要再註冊Handler了

    2011年7月26日 上午 07:25
  • 感覺是多次註冊Event Handler

    沒有呼叫Dispose的話就不要再註冊Handler了

    恩,應該是再次open的時候都會跑DataReceived += new SerialDataReceivedEventHandler();

    所以看到有人說先DataReceived -= new SerialDataReceivedEventHandler();

    就可以了。

    但是這是正確的做法嗎?

    2011年7月26日 上午 08:26
  • 通常在程式的開始加入事件和Open,程式結束Close,頻繁的開關和加入移除事件,應該沒什麼好處吧...
    2011年7月26日 上午 08:51
  • 純接收模式不應頻繁 Open/Close serialport

    如果真要這樣做, 請在Clsoe之前移除 Event Handle

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2011年7月26日 上午 09:03
    版主
  • 通常在程式的開始加入事件和Open,程式結束Close,頻繁的開關和加入移除事件,應該沒什麼好處吧...


    確實是沒有好處,但是如果有提供開關的功能給使用者,也許使用者就會依需求做開關動作。

    只是目前自己學習研究寫來試試看,所以剛好遇到這種情形,所以請教一下大家。謝謝!

    2011年7月26日 上午 09:04
  • 小心執行緒衝到 512 ,造成程式鎖住:

    http://social.msdn.microsoft.com/Forums/zh-HK/232/thread/9d455f3a-a673-4432-992a-70d642ad8cfd


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年7月26日 下午 12:40