C# 多线程网络程序问题
做一个网络应用程序
一个form中 要实时判断显示远程数据库的一个“总数”字段
我是用timer控件每隔2秒中探测一次
private void timer2_Tick(object sender, System.EventArgs e)
{
this.label9.Text = "这是远程结果 "
}
但是这样运得程序在慢了,请问怎样用多线程实现后台每隔2秒探测呀
请写写代码
------解决方案--------------------多线程实现有两种方法:
1,自己手动建立线程。
2.用.net内置的异步调用实现多线程。
Timer支持异步调用,所以可以用委托实现多线程。
大致这样。msdn提供了一个例子,代码如下。
楼主看看,稍改一下就可以了。
using System;
using System.Threading;
class TimerExample
{
static void Main()
{
AutoResetEvent autoEvent = new AutoResetEvent(false);
StatusChecker statusChecker = new StatusChecker(10);
// Create the delegate that invokes methods for the timer.
TimerCallback timerDelegate =
new TimerCallback(statusChecker.CheckStatus);
// Create a timer that signals the delegate to invoke
// CheckStatus after one second, and every 1/4 second
// thereafter.
Console.WriteLine( "{0} Creating timer.\n ",
DateTime.Now.ToString( "h:mm:ss.fff "));
Timer stateTimer =
new Timer(timerDelegate, autoEvent, 1000, 250);
// When autoEvent signals, change the period to every
// 1/2 second.
autoEvent.WaitOne(5000, false);
stateTimer.Change(0, 500);
Console.WriteLine( "\nChanging period.\n ");
// When autoEvent signals the second time, dispose of
// the timer.
autoEvent.WaitOne(5000, false);
stateTimer.Dispose();
Console.WriteLine( "\nDestroying timer. ");
}
}
class StatusChecker
{
int invokeCount, maxCount;
public StatusChecker(int count)
{
invokeCount = 0;
maxCount = count;
}
// This method is called by the timer delegate.
public void CheckStatus(Object stateInfo)
{
AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
Console.WriteLine( "{0} Checking status {1,2}. ",
DateTime.Now.ToString( "h:mm:ss.fff "),
(++invokeCount).ToString());
if (invokeCount == maxCount)
{
// Reset the counter and signal Main.
invokeCount = 0;
autoEvent.Set();
}
}
}