我想改變圖片的框圖像時,我的板(一個USB模塊)的加入或脫離域計算機。但我認爲我的線程只會執行一次。圖片框的圖片不會改變。圖片框圖像不改變在C#
我的代碼:
bool boardjoined = false;
void BoardConnecion()
{
foreach (var item in SerialPort.GetPortNames())
{
if (item == "COM3")
{
boardjoined = true;
DisplayImage(_pic_usb, "on.png");
}
else
{
boardjoined = false;
DisplayImage(_pic_usb, "off.png");
}
}
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
_pic_usb.Image = Bitmap.FromFile(Application.StartupPath + @"\off.png");
new Thread(new ThreadStart(BoardConnecion)).Start();
}
private void DisplayImage(PictureBox pic, string picName)
{
pic.Invoke(new EventHandler(delegate
{
pic.Image = Bitmap.FromFile(Application.StartupPath [email protected]"\" + picName);
}));
}
嘗試添加在'BoardConnecion'週期與一些'Delay' - 100毫秒。因此,該線程將檢查每100ms如果板連接 –
,但我想線程將被timer.my程序檢查每moment.not必須偵聽端口每一刻,傳遞信息 – user3374618
這將是糟糕的,無延遲,其原因會處理器100%的負載。延遲100ms或50ms並不是什麼大不了的事情。您已經等待驅動程序的初始化(它從板連接一段時間,直到COM3被creted或沒有?)還itwould是運行'DisplayImage'只有當狀態改變 –