C#多线程与跨线程访问界面控件的方法
作者:寻i 时间:2023-11-25 12:00:29
本文实例讲述了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#,线程,控件,方法
0
投稿
猜你喜欢
Java中文件操作功能小结
2023-06-20 03:32:28
Android--SQLite(增,删,改,查)操作实例代码
2022-09-04 18:29:48
Java基于余弦方法实现的计算相似度算法示例
2022-06-29 22:02:13
spring boot 使用profile来分区配置的操作
2022-11-27 22:55:15
SpringBoot登录验证码实现过程详解
2023-04-26 12:24:05
springboot实现返回文件流
2023-04-04 22:19:22
APK程序获取system权限的方法
2023-09-05 06:41:49
分享实现Android图片选择的两种方式
2023-06-28 05:09:27
SpringBoot Nacos实现自动刷新
2023-09-16 04:17:09
Java中使用内存映射实现大文件上传实例
2022-01-16 05:02:16
C# 实现dataGridView选中一行右键出现菜单的示例代码
2022-05-12 05:15:55
C#窗体布局方式详解
2023-09-26 11:17:32
C#使用oledb操作excel文件的方法
2023-06-13 19:19:42
Java常用类之System类的使用指南
2021-09-20 07:54:46
Java对象的内存布局详细介绍
2021-07-28 05:11:38
在当前Activity之上创建悬浮view之WindowManager悬浮窗效果
2023-02-09 21:02:12
C#中if语句使用概述
2022-08-31 23:22:09
Spring实战之@Autowire注解用法详解
2021-11-17 20:37:19
Java创建表格实例详解 <font color=red>原创</font>
2022-12-22 04:59:13
SpringSecurity认证流程详解
2022-06-25 21:44:49