C# 线程的使用

//开启刷新线程
private void BeginRefresh()
{
    //开启一个线程
	isThread1Runing = true;
	Thread thread = new Thread(new ThreadStart(ThreadRefreshRankingType));
	thread.Start();
}

//1,后台线程主代码
private void ThreadRefreshRankingType()
{
	string uuid = thread1UUid;
	while (isThread1Runing)
	{
		Thread.Sleep(refreshTime);
		if (!isThread1Runing)
		{
			return;
		}
		if (uuid != thread1UUid) return;
		//如果是在窗体的构造函数里面就开启线程,这里必须判断窗口句柄是否创建
		//否则会回调失败,出现: "在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke" 的错误
		if (IsHandleCreated)
		{
			BeginInvoke(new Del_RefreshRankingType(RefreshRankingType));
			indexRankingType++;
		}
	}
}

//2,代理
public delegate void Del_RefreshRankingType();

//3,代理的实现
public void RefreshRankingType()
{
	//这里是回调方法,在UI线程中执行的动作
	//......
}

猜你喜欢

转载自zheyiw.iteye.com/blog/2149184