1. 程式人生 > >Winform開發TreeView不能多執行緒操作

Winform開發TreeView不能多執行緒操作

    今天寫個小工具,在初始化TreeView時,為了不讓窗體掛掉,特意使用了多執行緒,結果發現TreeView很奇怪,不能使用多執行緒來操作,無論是使用將CheckForIllegalCrossThreadCalls=false;的非安全執行緒模式,還是安全執行緒模式,亦或BackgroundWorker模式,都不能在非UI執行緒裡對TreeView進行操作。網上有個關於VB.NET的多執行緒操作TreeView的帖子,提出線上程裡定義一個TreeView,生成Node後再新增到TreeView裡,其文章說,在新增操作也會耗費一點時間,顧我沒有采用,因為使用多執行緒就是為了在初始化TreeView時不讓窗體掛掉。    對於多執行緒為何不能直接操作TreeView,暫沒思考原因,發表在此是希望起到拋磚引玉的作用。哪位仁兄研究過,望告知,小弟不勝感激。

相關推薦

Winform控制元件執行操作控制元件的解決方案

1)在要訪問的控制元件的那個窗體,定義公共屬於或公共方法,這樣可以實現間接的訪問 2)在主窗體,定義方法來包裝上面定義的另外一個窗體的方法,然後定義委託。 3)如果當執行緒,直接委託實現就可以,如果多執行緒,用invoke技術 在多執行緒程式設計中,我們經常要在工作執行緒中去

Winform開發TreeView不能執行操作

    今天寫個小工具,在初始化TreeView時,為了不讓窗體掛掉,特意使用了多執行緒,結果發現TreeView很奇怪,不能使用多執行緒來操作,無論是使用將CheckForIllegalCrossThreadCalls

Android開發執行操作方式Thread,TimerTask,AsyncTask

雨鬆MOMO原創文章如轉載,請註明:轉載至我的獨立域名部落格雨鬆MOMO程式研究院,原文地址:http://www.xuanyusong.com/archives/344 Android研究院之遊戲開發多執行緒(十六)   遊戲開發與軟體開發多執行緒的重要性  &

c#執行操作測試(阻塞執行,結束任務)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Te

Java8 並行流執行操作

並行流是一個把內容分成多個數據塊的,並用不同的執行緒分別處理每個資料塊的流。下面通過簡單的示例介紹一下順序流和並行流的特點。後面後時間在詳細記錄。 並行流: public static void main(String[] args) { List<

java執行操作兩個資料庫.

package com.dinglin; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i

BackgroundWorker 實現執行操作

背景介紹   在做程式的過程中,我們很可能遇到這樣的情況:當我們執行一個比較耗時的操作,即介面載入資料量略大的時,在該操作未完成之前再去操作介面,就會出現停止響應的情況,這稱為介面假死狀態,那一個小圓圈轉呀轉的,想必大家看著就頭疼。當然這是一個非常影響使用者體驗度的地方。

iOS開發-iOS執行開發中踩過的坑-GCD的特性-NSOperation執行依賴-iOS執行踩坑小結

本期內容: iOS開發中從其他執行緒回到主執行緒的方法 dispatch_group_create 組的概念 dispatch_sync同步排程主執行緒會死鎖的原因 專案中什麼時候選擇GCD什麼時候選擇NSOperation NSOperation 執行緒依賴

通過實現runnable實現執行操作

第一步:建立一個抽象類,實現runnable介面。 public abstract class ThreadRun implements Runnable { @Override public void run() { doSomeThing();

Thread三種實現&執行操作同一物件的互斥同步以及物件的同步&定時器Timer

多執行緒 程序 程序:(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在程序是程式的基本執行實體,在當代面向執行緒設計的計算機結構中,程序是執行緒的容器,程是程式的實體。 多執行緒:是指從

Java Thread 執行 操作執行

建立、啟動執行緒 執行緒的實現方式 執行緒的生命週期 執行緒的狀態 控制執行緒 5、執行緒的建立和啟動 A、繼承Thread類或實現Runnable介面,重寫或實現run方法,run方法代表執行緒要完成的任務 B、建立Thread子類或是Ru

C# 執行操作介面時,使用Invoke與BeginInvoke的區別

Invoke方法的引數很簡單,一個委託,一個引數表(可選),而Invoke方法的主要功能就是幫助你在 UI執行緒(即建立控制元件的執行緒)上呼叫委託所指定的方法。Invoke方法首先檢查發出呼叫的執行緒(即當前執行緒)是不是UI執行緒,如果是,直接執行委託指向 的方法

python執行操作報錯:No handlers could be found for logger "websocket"

用python模擬對講機線上工具,在伺服器上成功連線的連線上限是1020個,需要確定遇到這個瓶頸的原因 1.連線失敗時的報錯資訊為 No handlers could be found for logger "websocket" 解決方法: import logging

模擬銀行取錢 (執行操作的好處)

(1)銀行類 package test4; /**  * 銀行賬戶  * @author user  *  */ public class Bank {private static double ba

Android執行操作sqlite資料庫連線池框架的一種設計思路

我們在Android應用程式開發當中經常會用到資料庫,一般在有兩種主要開發思路。 第一種:每次需要對資料庫操作的時候建立連線,操作完成後,馬上關閉連線。 這個方式一般用於不怎麼頻繁操作資料庫的情況,用完後馬上關閉達到節省系統資源的目的。 第二種:應用程式一

執行操作雜湊表避免死鎖

copy自《UNIX環境高階程式設計》圖11.11。 #include <stdlib.h> #include <pthread.h> #define NHASH 29 #define HASH(id) (((unsigned lon

(Linux執行程式設計(不限Linux))執行操作

——本文一個例子展開,介紹Linux下面執行緒的操作、多執行緒的同步和互斥。 前言 執行緒?為什麼有了程序還需要執行緒呢,他們有什麼區別?使用執行緒有什麼優勢呢?還有多執行緒程式設計的一些細節問題,如執行緒之間怎樣同步、互斥,這些東西將在本文中介紹。我在某QQ群裡見到這樣一道面試題: 是否熟悉POS

java 執行操作 安全操作 synchronized

java 多執行緒操作 安全操作 synchronized 記錄程式碼如下 Thread myThread = new Thread(new Runnable() { @Override public void run() { // synchro

linux shell執行操作

原理:linux的shell命令可以實現多執行緒執行,並且執行緒間具備通訊機制。 1、單執行緒 原理:預設的情況下,Shell指令碼中的命令是序列執行的,必須等到前一條命令執行完後才執行接下來的命令。 例項: #!/bin/bash   for(( i = 0; i &

python執行操作資料庫問題

python多執行緒併發操作資料庫,會存在連結資料庫超時、資料庫連線丟失、資料庫操作超時等問題。解決方法:使用資料庫連線池,並且每次操作都從資料庫連線池獲取資料庫操作控制代碼,操作完關閉連線返回資料庫連線池。*連線資料庫需要設定charset = 'utf8', use_un