[問題] C#多線程及回呼函數問題

作者: james999 (無傷大雅)   2018-01-12 01:24:55
最近在使用Vlc.Net,
主要是參考原作者在官網放的範例:
https://github.com/ZeBobo5/Vlc.DotNet/wiki/Getting-started
其中,將MainThread的內容移至自己程式的函式內,
因為同時有宣告多個影像連線需求,所以將範例底端的while迴圈移除。
又於mediaPlayer.PositionChanged += (sender, e) =>內加上Snapshot,
Snapshot所產生的檔案名稱也是依MAC儲存,
有將建立出來的mediaPlayer存於Dictionary,key為裝置的MAC位址。
同時建立2個連線並Snapshot時,程式貌似有機率會卡住,
既然Vlc Play後自己會內建線程,那麼這個回呼也是由不同線程所執行,
不曉得為什麼會造成Snapshot卡住,而沒有產生圖檔。
p.s. 程式中另外有條非MainThread每100毫秒讀取2個連線Snapshot所建立的圖檔各一次
,迴圈每次都建立Image物件。
參考MSDN Class Image資訊為..
[執行緒安全]
此類型的任何 public static (在 Visual Basic 中 共用 在 Visual Basic 中) 成員皆
為安全執行緒。不保證任何執行個體成員為安全執行緒。
僅建立1個連線的情況則可以掛上1-2天都沒問題.
有請大大們解惑,謝謝:)
※ 編輯: james999 (61.230.197.165), 01/12/2018 01:34:58
作者: yzfr6 (扮關二哥!)   2018-02-22 07:15:00
多執行緒

Links booklink

Contact Us: admin [ a t ] ucptt.com