我正试图找到一种方法,使程序不会暂停,但是它们会延迟执行某些任务。即我试图延迟输出'Hello'到控制台10秒,但程序将继续执行程序的其余部分。
答案 0 :(得分:5)
使用TPL:
static void Main(string[] args)
{
Console.WriteLine("Starting at " + DateTime.Now.ToString());
Task.Run(() =>
{
Thread.Sleep(10000);
Console.WriteLine("Done sleeping " + DateTime.Now.ToString());
});
Console.WriteLine("Press any Key...");
Console.ReadKey();
}
输出:
Starting at 2/14/2017 3:05:09 PM
Press any Key...
Done sleeping 2/14/2017 3:05:19 PM
请注意,如果您在10秒前按键,它将退出。
答案 1 :(得分:2)
有两种模拟延迟的典型方法:
Thread.Sleep
public static void Main(string[] args)
{
Both();
}
static void Both() {
var list = new Task [2];
list[0] = PauseAndWrite();
list[1] = WriteMore();
Task.WaitAll(list);
}
static async Task PauseAndWrite() {
await Task.Delay(2000);
Console.WriteLine("A !");
}
static async Task WriteMore() {
for(int i = 0; i<5; i++) {
await Task.Delay(500);
Console.WriteLine("B - " + i);
}
}
你好像是指第一种情况。
这是一个例子
B - 0
B - 1
B - 2
A !
B - 3
B - 4
输出
Set ConfigWkb = ActiveWorkbook
Set ConfigWkst = ConfigWkb.ActiveSheet
Set UserRoleWkb = Workbooks.Open("C:\Users\cs\Desktop\Ar.xlsx")
Set UserRoleWkst = UserRoleWkb.Sheets("RS Users")
答案 2 :(得分:1)
开始一个新主题:
Task.Factory.StartNew(new Action(() =>
{
Thread.Sleep(1000 * 10); // sleep for 10 seconds
Console.Write("Whatever");
}));
答案 3 :(得分:1)
您可以使用Task.Delay和ContinueWith方法的组合:
Task.Delay(10000).ContinueWith(_ => Console.WriteLine("Done"));
答案 4 :(得分:0)
您可以使用&#39; Thread.Sleep(10000);&#39;
请参阅: https://msdn.microsoft.com/en-us/library/d00bd51t(v=vs.110).aspx