C# 定时调用cmd 避免阻塞
时间: 2023-08-02 15:12:08 浏览: 180
你可以使用C#的`Process`类来启动命令行并执行命令,同时使用`Timer`类来定时调用该方法。这样就可以避免阻塞了。
以下是一个示例代码:
```csharp
using System;
using System.Diagnostics;
using System.Timers;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Timer timer = new Timer(5000); // 定时器间隔为5秒
timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
timer.Enabled = true;
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine("Executing command...");
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/C dir"; // 执行dir命令
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
Console.WriteLine(output);
process.WaitForExit();
process.Close();
Console.WriteLine("Command executed.");
}
}
}
```
在上面的示例中,`OnTimedEvent`方法会定时执行,启动命令行并执行`dir`命令。注意,我们使用`/C`参数来告诉命令行执行完命令后自动关闭。同时,我们还将`RedirectStandardOutput`属性设置为`true`,这样就可以获取命令行输出并打印到控制台上。
另外,要注意的是,在执行命令时,我们使用了`process.WaitForExit()`方法来等待命令行执行完毕。这里可以根据具体情况调整等待时间,或者使用异步方式执行命令。
阅读全文