程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#多線程與跨線程拜訪界面控件的辦法

C#多線程與跨線程拜訪界面控件的辦法

編輯:C#入門知識

C#多線程與跨線程拜訪界面控件的辦法。本站提示廣大學習愛好者:(C#多線程與跨線程拜訪界面控件的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#多線程與跨線程拜訪界面控件的辦法正文


本文實例講述了C#多線程與跨線程拜訪界面控件的辦法。分享給年夜家供年夜家參考。詳細剖析以下:

在編寫WinForm拜訪WebService時,常會碰到由於收集延遲形成界面卡逝世的景象。啟用新線程去拜訪WebService是一個可行的辦法。

典范的,有上面的啟動新線程示例:
private void LoadRemoteAppVersion() 

    if (FileName.Text.Trim() == "") return; 
    StatusLabel.Text = "正在加載"; 
    S_Controllers_Bins.S_Controllers_BinsSoapClient service = new S_Controllers_Bins.S_Controllers_BinsSoapClient(); 
    S_Controllers_Bins.Controllers_Bins m = service.QueryFileName(FileName.Text.Trim()); 
    if (m != null) 
    { 
        //todo: 
        StatusLabel.Text = "加載勝利"; 
    }else 
        StatusLabel.Text = "加載掉敗"; 

private void BtnLoadBinInformation(object sender, EventArgs e) 

    Thread nonParameterThread = new Thread(new ThreadStart(LoadRemoteAppVersion)); 
    nonParameterThread.Start();   
}

運轉法式的時刻,假如要在線程裡操作界面控件,能夠會提醒不克不及跨線程拜訪界面控件,有兩種處置辦法:

1.啟動法式改一下:
/// <summary> 
/// 運用法式的主進口點。 
/// </summary> 
[STAThread] 
static void Main() 

    Application.EnableVisualStyles();  
    System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 
}
2.應用拜托
public delegate void LoadRemoteAppVersionDelegate(); //界說拜托變量
private void BtnLoadBinInformation(object sender, EventArgs e) 

    LoadRemoteAppVersionDelegate func = new LoadRemoteAppVersionDelegate(LoadRemoteAppVersion);//<span >LoadRemoteAppVersion不消修正</span> 
    func.BeginInvoke(null, null); 
}

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved