C#多线程与跨线程访问界面控件的方法

 更新时间:2015年03月03日 11:19:58   作者:寻i  
这篇文章主要介绍了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 style="font-family: Arial, Helvetica, sans-serif;">LoadRemoteAppVersion不用修改</span> 
    func.BeginInvoke(null, null); 
}

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • c#生成缩略图的实现方法

    c#生成缩略图的实现方法

    c#生成缩略图的实现方法,需要的朋友可以参考一下
    2013-04-04
  • Unity实现绕任意轴任意角度旋转向量

    Unity实现绕任意轴任意角度旋转向量

    这篇文章主要为大家详细介绍了Unity实现绕任意轴任意角度旋转向量,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • C#中Parallel类For、ForEach和Invoke使用介绍

    C#中Parallel类For、ForEach和Invoke使用介绍

    这篇文章介绍了C#中Parallel类For、ForEach和Invoke的使用方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#实现获取IIS站点及虚拟目录信息的方法

    C#实现获取IIS站点及虚拟目录信息的方法

    这篇文章主要介绍了C#实现获取IIS站点及虚拟目录信息的方法,可实现获取IIS站点信息及物理路径等功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • C#中Array与ArrayList用法及转换的方法

    C#中Array与ArrayList用法及转换的方法

    C#中Array与ArrayList用法及转换的方法,需要的朋友可以参考一下
    2013-03-03
  • C#中Lambda表达式的用法

    C#中Lambda表达式的用法

    这篇文章介绍了C#中Lambda表达式的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#中多态、重载、重写区别分析

    C#中多态、重载、重写区别分析

    这篇文章主要介绍了C#中多态、重载、重写区别,采用实例较为通俗易懂的分析了多态、重载的重写的概念与用法,对于C#初学者有非常不错的借鉴价值,需要的朋友可以参考下
    2014-09-09
  • 在C#程序中注入恶意DLL的方法详解

    在C#程序中注入恶意DLL的方法详解

    为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的?其实简而言之就是线程的远程注入,这一篇就展开说一下
    2022-09-09
  • 基于Unity制作一个简易的计算器

    基于Unity制作一个简易的计算器

    今天主要和大家分享如何使用Unity制作计算器,难度中等,可以用来学习,或者当成其他项目的小组件导入。当然,也可以导出来,发布到网页端,来做一个嵌入式工具也可以。感兴趣的可以跟随小编学习一下
    2022-03-03
  • WPF简单的数据库查询实例

    WPF简单的数据库查询实例

    下面小编就为大家分享一篇WPF简单的数据库查询实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11

最新评论