我現在是在foreach中添加了委托來回圈生成控制元件,foreach是用來接收設備傳來的資訊的,結果一用委托就接收不到設備傳的資訊

uj5u.com熱心網友回復:
如果是在foreach里直接回圈生成panel會直接報在某個執行緒上創建的控制元件不能成為在另一個執行緒上創建的控制元件的父級uj5u.com熱心網友回復:
記憶體溢位了吧?uj5u.com熱心網友回復:
我是剛開始學這個之前沒接觸過
我現在主要是想在foreach里直接回圈生成panel但是他會直接報在某個執行緒上創建的控制元件不能成為在另一個執行緒上創建的控制元件的父級,頭大
uj5u.com熱心網友回復:
你直接寫在回圈里肯定是子執行緒無法訪問UI執行緒的控制元件了。你寫在委托里,當然可以,但是可以使用匿名函式,函式體直接寫在foreach中,比如:
int a = 0;
this.Invoke(delegate ()
{
a = 1;
Console.WriteLine(a);
});
只需要注意解決閉包產生的變數作用域提升帶來的問題就行了。
uj5u.com熱心網友回復:
大佬,我有點不懂你得意思,我的意思是我在foreach里可以使用 K3Infos.Key.值,來獲取我想要的值,我在Form界面上也可以得到(前提是是在界面拖出來而不是代碼回圈出來的),但是我用委托回圈生成控制元件的話是拿不到我要的值的,除錯資訊里沒有值。這個foreach是不斷接收設備傳來的資訊然后通過K3Infos.Key.值來獲取值。uj5u.com熱心網友回復:
我在Form1Load里會呼叫jieshou這個執行緒,從而達到不斷接收設備傳資訊的目的,也就是因為這樣不得不在foreach里用委托的方式創建執行緒,不然就會報在某個執行緒上創建的控制元件不能成為在另一個執行緒上創建的控制元件的父級
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/245452.html
