我如何 运行 在特定时间段内执行 c#
How can i run do while for specific time period c#
我有下面的代码,可以 运行 无限期,但我需要时间作为用户的输入。
因此,如果用户输入 15 分钟,我想 运行 此代码为 15 分钟。
是的,我可以将 DateTime.Now 与 15mits 进行比较,但是还有其他有效的方法吗?因为这将是我的多线程应用程序。
private static async void SendDeviceToCloudMessagesAsync(string deviceid , string deviceKey)
{
deviceClient = DeviceClient.Create("HOSTNAME", new DeviceAuthenticationWithRegistrySymmetricKey(deviceid, deviceKey), Microsoft.Azure.Devices.Client.TransportType.Mqtt);
double minTemperature = 20;
double minHumidity = 60;
int messageId = 1;
Random rand = new Random();
do
{
double currentTemperature = minTemperature + rand.NextDouble() * 15;
double currentHumidity = minHumidity + rand.NextDouble() * 20;
var telemetryDataPoint = new
{
messageId = messageId++,
deviceId = deviceid,
temperature = currentTemperature,
humidity = currentHumidity
};
var messageString = JsonConvert.SerializeObject(telemetryDataPoint);
var message = new Microsoft.Azure.Devices.Client.Message(Encoding.ASCII.GetBytes(messageString));
message.Properties.Add("temperatureAlert", (currentTemperature > 30) ? "true" : "false");
await deviceClient.SendEventAsync(message);
Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, messageString);
await Task.Delay(1000);
} while (true);
}
尝试将您的代码替换为
等待Task.Delay(TimeSpan.FromSeconds(1000));
您可以查看 System.Timers.Timer。您创建一个它的实例,在构造函数中设置间隔,然后编写一个方法来处理 Elapsed 事件。
// Create a timer with a two second interval.
var aTimer = new System.Timers.Timer(2000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += OnTimedEvent // Name this whatever you want and put code here;
aTimer.AutoReset = true;
aTimer.Enabled = true;
您现在要做的就是编写 Elapsed 事件处理程序...在本例中为 OnTimedEvent。请注意,此方法必须具有此签名:
private static void 对象源,ElapsedEventArgs e)
我有下面的代码,可以 运行 无限期,但我需要时间作为用户的输入。
因此,如果用户输入 15 分钟,我想 运行 此代码为 15 分钟。
是的,我可以将 DateTime.Now 与 15mits 进行比较,但是还有其他有效的方法吗?因为这将是我的多线程应用程序。
private static async void SendDeviceToCloudMessagesAsync(string deviceid , string deviceKey)
{
deviceClient = DeviceClient.Create("HOSTNAME", new DeviceAuthenticationWithRegistrySymmetricKey(deviceid, deviceKey), Microsoft.Azure.Devices.Client.TransportType.Mqtt);
double minTemperature = 20;
double minHumidity = 60;
int messageId = 1;
Random rand = new Random();
do
{
double currentTemperature = minTemperature + rand.NextDouble() * 15;
double currentHumidity = minHumidity + rand.NextDouble() * 20;
var telemetryDataPoint = new
{
messageId = messageId++,
deviceId = deviceid,
temperature = currentTemperature,
humidity = currentHumidity
};
var messageString = JsonConvert.SerializeObject(telemetryDataPoint);
var message = new Microsoft.Azure.Devices.Client.Message(Encoding.ASCII.GetBytes(messageString));
message.Properties.Add("temperatureAlert", (currentTemperature > 30) ? "true" : "false");
await deviceClient.SendEventAsync(message);
Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, messageString);
await Task.Delay(1000);
} while (true);
}
尝试将您的代码替换为
等待Task.Delay(TimeSpan.FromSeconds(1000));
您可以查看 System.Timers.Timer。您创建一个它的实例,在构造函数中设置间隔,然后编写一个方法来处理 Elapsed 事件。
// Create a timer with a two second interval.
var aTimer = new System.Timers.Timer(2000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += OnTimedEvent // Name this whatever you want and put code here;
aTimer.AutoReset = true;
aTimer.Enabled = true;
您现在要做的就是编写 Elapsed 事件处理程序...在本例中为 OnTimedEvent。请注意,此方法必须具有此签名:
private static void 对象源,ElapsedEventArgs e)