C winform多執行緒問題解決總結

2021-08-21 15:37:22 字數 821 閱讀 8205

一、多執行緒建立後,窗體出現假死

二、視窗關閉時,執行緒全部停止

解決:將其設定為後台程序:thread.isbackground = true;但是有時需要迴圈建立執行緒時就不這麼好使了,最後我用了簡單粗暴的方法:system.environment.exit(0);

三、視窗不關閉的情況下,執行緒停止

問題背景:我使用了迴圈去建立執行緒,看網上使用thread.abort();可以終止執行緒,但是試了之後並不理想,因為是迴圈建立,在其他操作觸發時無法停止迴圈。

解決:此時我的思路是:定義乙個執行緒建立標識,當要停止執行緒時,則置為false,在迴圈中判斷此變數來控制是否建立執行緒。

部分**如下:

1、設定乙個全域性變數

private static bool g_threadflagvo = true;//是否建立執行緒標識,用於關閉功能時停止執行緒的建立
2、關閉功能時,將標識變數置為false

g_threadflagvo = false;
3、在迴圈建立執行緒處的處理

foreach (var item in orderdataarr)

else

}

四、執行緒中與winform控制項互動報錯:

解決:在使用執行緒前加上**:執行緒間操作無效: 從不是建立控制項「***x」的執行緒訪問它。

control.checkforillegalcrossthreadcalls = false;

解決IOS多執行緒讀寫Sqlite問題解決

現在ios裡使用的資料庫一般都是sqlite,但是使用sqlite有個不太好的地方就是在多執行緒的時候,會出現問題,sqlite只能開啟乙個讀或者寫鏈結。這樣的話多執行緒就會碰到資源占用的問題。最開始是使用fmdb,fmdb的早期版本不能解決這個問題,後來fmdb更新了,新版本的fmdb能夠很好的解...

IOS多執行緒讀寫Sqlite問題解決

現在ios裡使用的資料庫一般都是sqlite,但是使用sqlite有個不太好的地方就是在多執行緒的時候,會出現問題,sqlite只能開啟乙個讀或者寫鏈結。這樣的話多執行緒就會碰到資源占用的問題。最開始是使用fmdb,fmdb的早期版本不能解決這個問題,後來fmdb更新了,新版本的fmdb能夠很好的解...

IOS多執行緒讀寫Sqlite問題解決

現在ios裡使用的資料庫一般都是sqlite,但是使用sqlite有個不太好的地方就是在多執行緒的時候,會出現問題,sqlite只能開啟乙個讀或者寫鏈結。這樣的話多執行緒就會碰到資源占用的問題。最開始是使用fmdb,fmdb的早期版本不能解決這個問題,後來fmdb更新了,新版本的fmdb能夠很好的解...