C# 用C设置睡眠时间#
我想每两分钟发送一次数据 现在,我有以下代码:C# 用C设置睡眠时间#,c#,sleep,C#,Sleep,我想每两分钟发送一次数据 现在,我有以下代码: using (var client = new WebClient()) { byte[] responseArray = client.UploadValues(Server, myNameValueCollection); Answer = Encoding.ASCII.GetString(responseArray); } 我不知道该怎么做。我试图在我的代码中添加如下内容: private void SendData() {
using (var client = new WebClient())
{
byte[] responseArray = client.UploadValues(Server, myNameValueCollection);
Answer = Encoding.ASCII.GetString(responseArray);
}
我不知道该怎么做。我试图在我的代码中添加如下内容:
private void SendData()
{
...
using (var client = new WebClient())
{
byte[] responseArray = client.UploadValues(Server, myNameValueCollection);
Answer = Encoding.ASCII.GetString(responseArray);
}
}
致电:
public void main(object sender, EventArgs e)
{
Thread iThread = new Thread(new ThreadStart(SendData));
iThread.Start();
iThread.Sleep();
}
但是没有运气。我的程序是一个C#Console应用程序。线程代码应该运行循环
while (true)
{
....
Thread.Sleep(120*1000);
}
线程代码应该运行一个循环
while (true)
{
....
Thread.Sleep(120*1000);
}
你走对了方向,试试这样的方法:
public void Main(..)
{
new Thread(new ThreadStart(SendData)).Start();
}
public void SendData()
{
while(true)
{
using (var client = new WebClient())
{
byte[] responseArray = client.UploadValues(Server, myNameValueCollection);
Answer = Encoding.ASCII.GetString(responseArray);
}
Thread.Sleep(120000); // sleep for 2 mins between cycles
}
}
你走对了方向,试试这样的方法:
public void Main(..)
{
new Thread(new ThreadStart(SendData)).Start();
}
public void SendData()
{
while(true)
{
using (var client = new WebClient())
{
byte[] responseArray = client.UploadValues(Server, myNameValueCollection);
Answer = Encoding.ASCII.GetString(responseArray);
}
Thread.Sleep(120000); // sleep for 2 mins between cycles
}
}
为什么不用定时器呢?比如:
using System.Timers;
System.Timers.Timer t1 = new System.Timers.Timer(2*60*1000 /*2mins interval*/);
t1.Elapsed += new System.Timers.ElapsedEventHandler(t1_Elapsed);
t1.Start();
void t1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//Do your stuff.
}
但是您需要一个像表单这样的应用程序来持续运行。
i、 e.Application.Run(您的对象)代码>
或者创建一个表单而不是控制台并隐藏表单。(这不是最好的办法。)
但是我认为使用计时器是一种方法。为什么不使用计时器呢?比如:
using System.Timers;
System.Timers.Timer t1 = new System.Timers.Timer(2*60*1000 /*2mins interval*/);
t1.Elapsed += new System.Timers.ElapsedEventHandler(t1_Elapsed);
t1.Start();
void t1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//Do your stuff.
}
但是您需要一个像表单这样的应用程序来持续运行。
i、 e.Application.Run(您的对象)代码>
或者创建一个表单而不是控制台并隐藏表单。(这不是最好的办法。)
但我认为使用计时器是一种方法。首先,您在原始线程上调用Thread.Sleep(),而不是您刚刚创建和启动的线程
其次,在两分钟结束后,您没有将再次调用SendData的循环
您可能希望查看用户计时器,而不是尝试使用自己的代码设置两分钟的循环间隔
首先,您正在原始线程上调用Thread.Sleep(),而不是刚刚创建和启动的线程
其次,在两分钟结束后,您没有将再次调用SendData的循环
您可能希望查看用户计时器,而不是尝试使用自己的代码设置两分钟的循环间隔
我支持使用计时器,特别是如果您确实希望有一个固定的时间间隔,而不考虑实际发送数据所需的时间,或者您希望明确控制行为,如果您无法在时间间隔内完成任务,会发生什么情况。我支持使用计时器,特别是如果您确实希望有一个固定的时间间隔,而不考虑实际发送数据所需的时间,或者您希望明确控制行为,如果无法在该时间间隔内完成任务会发生什么。为此,您应该使用System.Threading.Timer(无需messageloop)。但是,由于Main()没有做任何其他事情,所以这并不重要。为此,您应该使用System.Threading.Timer(不需要messageloop)。但是,由于Main()没有做任何其他事情,所以这一点都不重要。