最近在项目中用到了多线程,其实就是一个线程获取数据,然后通知主线程更新数据,那个获取数据的方式是一直运行的,public Thread GetMeg =null;
public void Get()
{
GetMeg = new Thread(new ThreadStart(getMessage));
GetMeg.IsBackground = true;
GetMeg.Start();
}
这是我调用获取数据的方式getMessage 方法是一个http获取的方式,循环执行,
目前遇到一个问题,这个多线程在有时候成功,有时候没有效果(getMessage 方法执行,但是UI假死),请教一下,这是是不是我代码中调用线程的访问存在问题导致的?C#多线程UI
public void Get()
{
GetMeg = new Thread(new ThreadStart(getMessage));
GetMeg.IsBackground = true;
GetMeg.Start();
}
这是我调用获取数据的方式getMessage 方法是一个http获取的方式,循环执行,
目前遇到一个问题,这个多线程在有时候成功,有时候没有效果(getMessage 方法执行,但是UI假死),请教一下,这是是不是我代码中调用线程的访问存在问题导致的?C#多线程UI
目测可能存在的问题:
1.getMessage循环获取数据时没有加sleep
2."通知主线程更新数据"这里有问题
{
while (true)
{
//Application.DoEvents();
{
BunnTools.FilesTool.WriteToFile(Application.StartupPath + "\\Applog.log", "消息记录:" + Environment.NewLine + DateTime.Now + " " + "执行一次 " + GetMeg.GetApartmentState().ToString(), false);
string message = GetMessage(); if (this.Messagage != null)
{
this.Messagage((message));
}
}
}
}现在我的GetMessage();这个方式是访问http的,很耗时,我就修改成了现在的多线程循环调用,得到返回信息,委托传递给主线程,是不是我的思路就有问题呢?
2 线程写LOG文件以方便测试