C# 线程 委托
Thread GetStatus_Thread = new Thread(new ThreadStart(Del_GetStatus));
GetStatus_Thread.IsBackground = true;
GetStatus_Thread.Start();
delegate void delegat_GetStatus();
public void Del_GetStatus()
{
delegat_GetStatus read_B = new delegat_GetStatus(GetStatus);
IAsyncResult result = read_B.BeginInvoke(new AsyncCallback(ACTest), null);
while (!result.IsCompleted)
{
Thread.Sleep(1000);
}
if (result.IsCompleted)
{
Thread.Sleep(1000);
Del_GetStatus();
}
}
public void ACTest(IAsyncResult result)
{
AsyncResult asyncRet=(AsyncResult) result;
delegat_GetStatus dt = (delegat_GetStatus)asyncRet.AsyncDelegate;
dt.EndInvoke(result);
}
public void GetStatus()
{
if (eLogic.Is_Write == false)
{
listStatus.Items.Clear();
Dictionary<string, string> dic = eLogic.eDriver.getDeviceStatus();
foreach (KeyValuePair<string, string> kvp in dic)
{
listStatus.Items.Add(kvp.Key + ":" + kvp.Value);
}
}
if (is_PK == true)
{
if (read_list_Index < eLogic.readInfo_List.Count)
{
for (int i = read_list_Index; i < eLogic.readInfo_List.Count; i++)
{
listReadInfo.Items.Add(eLogic.readInfo_List[i].ToString());
read_list_Index++;
}
}
}
}
各位大侠,现在我用线程调用委托方法时,长时间运行,会出现下图的错误信息。各位帮忙看看是什么问题,谢谢?

...全文
相关推荐
C# winform 防止界面卡住 线程 委托
因此,当我们需要进行耗时操作时,可以在后台线程上执行,这样就不会阻塞主线程,保证界面的流畅性。接着,我们来看委托。委托在C#中是一种类型,它可以引用方法,类似于函数指针。
C#中实现多线程委托的具体指南
本文还有配套的精品资源,点击获取 简介:在C#编程中,多线程和委托是提高应用程序性能和响应性的关键概念。本文将介绍如何在Windows Forms应用中利用这些概念,以按钮点击事件为例,通过主线程和新建线程分别向listview控件添加数据。内容涵盖线程创建与管理、委托的使用、事件和异步操作,以及如何安全地从多线程中更新UI控件。 1. 多线程概念与C#实现 ...
C# 通过委托和线程实现chart控件的实时更新
C# 通过委托和线程实现 Chart 控件的实时更新在 C# 编程中,实现 Chart 控件的实时更新是一个常见的需求。为此,我们可以使用委托(Delegate)和线程(Thread)来实现这个功能。
c#多线程利用委托更新控件内容
C# 多线程利用委托更新控件内容在 C# 编程中,多线程编程是常见的场景之一,特别是在需要实时更新控件内容的情况下。
C#用委托BeginInvoke做异步线程
C#用委托BeginInvoke做异步线程在C#中,异步线程是一个非常重要的概念,通过使用委托的BeginInvoke方法,可以实现异步线程的执行。


