本文实例讲述了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.启动程序改一下:

///

/// 应用程序的主入口点。

///

[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);//LoadRemoteAppVersion不用修改

func.BeginInvoke(null, null);

}

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

java 线程访问控件_C#多线程与跨线程访问界面控件的方法相关推荐

  1. windows查询每个线程占用的内存_C#多线程

    一.基本概念 1.进程 首先打开任务管理器,查看当前运行的进程: 从任务管理器里面可以看到当前所有正在运行的进程.那么究竟什么是进程呢? 进程(Process)是Windows系统中的一个基本概念,它 ...

  2. 主线程是如何向子线程传递数据的?_c++ 利用thread创建线程

    用进行多线程开发 小时候,老师总是教育我们上课要专心,"一心不可二用".可是CPU这个不听话的"熊孩子"偏偏却在一个芯片中加入了两个甚至多个运算核心,想要一&q ...

  3. java设置access-allow_Java中设置多个Access-Control-Allow-Origin跨域访问

    1.如果服务端是Java开发的,添加如下设置允许跨域即可,但是这样做是允许所有域名都可以访问,不够安全. response.setHeader("Access-Control-Allow-O ...

  4. jmeter跨线程组传多个值_Jmeter 跨线程组传递参数 之两种方法(转)

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...

  5. 允许跨域访问_PHP设置多域名允许跨域访问

    php中文网最新课程 每日17点准时技术干货分享 针对 PHP 语言设置多域名允许跨域访问 服务器变量: 服务器变量存储在 $_SERVER 数组中,在这个数组中有一个特殊的键值:HTTP_ORIGI ...

  6. 如何跨服务器访问html 页面,html页面如何跨域访问另一页面内容,并将部分内容呈现出来?...

    html代码: 简介 我需要将接口界面的部分内容,显示在id为p4的块中,我自己这边服务器请求是跨域访问,如何操作? jquery ajax来完成,load()方法不能跨域,所以不能用:我自己的代码如 ...

  7. 如何跨网段访问计算机名,伪装IP进行跨网段访问

    环境: 主机A:win2000 advance server(host os) 主机B:win2000 advance server(guest os) 工具:VMWare.Sniffer Pro 实 ...

  8. winform使用多线程时跨线程访问控件

    之前写winform用多线程,在子线程里访问窗体控件需要用委托,由于委托使用不熟练,在网上找的各种方法都觉得太复杂看不懂,后来发现一种写法如下: if (pictureBox1.InvokeRequi ...

  9. 用java线程绘制图案_关于多线程:使用线程在java中绘制面板

    我正在编写一个包含许多不同视图的程序. 其中一个是相当图形密集型(它显示一个互连的图形). 其他人只是展示小而复杂的图表. 我发现主视图的绘制时间很长(甚至只绘制当前可见的区域),并且在绘制时,界面的 ...

最新文章

  1. CMake 条件判断
  2. sql随机实现,sql GUID
  3. 洛谷 1541 乌龟棋
  4. TCP 通信过程中各步骤的状态
  5. P2050 [NOI2012]美食节
  6. 从GlassFish 3.x扩展到WebLogic 12c Server
  7. linux msgctl函数,msgctl()函数
  8. 一个优雅的后端API接口样例和代码实现方案
  9. 浅析gcc、arm-linux-gcc和arm-elf-gcc的关系-转
  10. linux中配置Java环境
  11. Atitit java解析yml文件 以及使用 spel ognl 读取 v4 u77.docx Atitit java解析yml文件 目录 1.1. Springboot use snak
  12. 2022年9月中国数据库排行榜:榜眼、探花纷纷易主,AnalyticDB蝉联榜单十强
  13. 西门子SIMATIC S7-1500,ET 200SP,HMI触摸屏面板产品型号
  14. 二叉树的遍历|前序、中序、后序、层序遍历
  15. source insight 4.0 的一些设置
  16. 给未来程序员的15个顶级职业建议
  17. 一生至少原谅的三个人
  18. 第七章 浮动(制作京东登录页面)
  19. 概率论 事件关系 古典概型与几何概型
  20. 视频监控安防平台-国标28181平台(支持国标28181转RTSP/RTMP/HLS/WEBRTC直播)

热门文章

  1. Actor-ES框架:Ray-Handler-消息订阅器编写
  2. 使用混合云的SQL Server
  3. 复习深入笔记01:对象/可变与不可变类型/字符编码/闭包
  4. vue完全编程方式与react在书写和运用上的异同
  5. origin如何绘制双y轴曲线_Origin用矩阵绘制多层曲面映射图
  6. [转]从入门到精通,Java学习路线导航
  7. ArcGIS实验教程——实验十一:影像拼接与提取
  8. C语言试题二十之利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。
  9. C和指针之字符串编程练习1
  10. Android之用jadx进行反编译