gpt4 book ai didi

c# - 如何在里面设置定时器

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:40 25 4
gpt4 key购买 nike

我有一个 while 循环。我想在 2 种情况下跳出这个:

  1. 我找到了我需要的东西
  2. 我花了 10 多秒才找到它

我知道我可以在 while 之前设置日期 startTime 并在 NowTime -startTime > 10000 时检查内部,如下所示:

         DateTime start = DateTime.Now;
while (Find == false)
{
//code

if()Find=true;
DateTime end = DateTime.Now;
if(end-start>10)Find=true;
}

但我正在寻找更优雅的决定。

最佳答案

您的代码示例将无法运行,因为如果搜索逻辑(示例中的“//代码”部分)执行时间超过 10 秒,您将无法到达测试直到它完成。

你应该做的是在一个单独的线程中执行你的操作,并在这个线程上使用超时。

例如:

    public void MyMethod()
{
var findThread = new Thread(Find);
findThread.Start();

if (!findThread.Join(TimeSpan.FromSeconds(10)))
{
findThread.Abort();
Debug.WriteLine("Find timeout occured");
// Handle find timeout
}
}

private static void Find()
{
//Thread.Sleep(TimeSpan.FromSeconds(5));
Thread.Sleep(TimeSpan.FromSeconds(20));

Debug.WriteLine("Find succeeded");
}

取消注释 Thread.Sleep(TimeSpan.FromSeconds(5)) 行(并注释其他 Thread.Sleep)以验证它是否按预期工作方法执行时间不到 10 秒。

关于c# - 如何在里面设置定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22806923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com