C#启动一个等待条件= true的非阻塞后台线程,然后对其进行操作

时间:2015-08-28 23:16:28

标签: c# task nonblocking

我需要检查一个条件并等到它是真的,然后在它超时之后做一些事情。但是我希望它不会阻塞,所以主线程可以继续。

我有以下方法:

public static bool IsArrayEmptyThread(string arrName, int timeoutSecs = 30)
    {
        bool arrEmpty = false;
        var sw = Stopwatch.StartNew();

        var t = Task.Run(() =>
            {
                while (arrEmpty = !ArrayManager.IsArrayEmpty(arrayName) && sw.Elapsed.Seconds < timeoutSecs)
                {   };

                EmailManager.SendEmail("me@example.com", "me@example.com", "testing", arrEmpty.ToString() + "<br>" + "Ran");

                return arrEmpty; 

            }
           );

        return arrEmpty;
       }

从主线程中,我只是调用这个方法并继续做其他事情。

然而,当exe的执行完成时,电子邮件才会消失。此外,如果我在电子邮件通话后立即删除了返回声明,则电子邮件永远不会出现。

同样,我只想将该方法称为非阻塞程序,让它做它的事情,而程序的其余部分继续运行,但我不希望它等到执行完成后才能执行它需要什么。

谢谢!

0 个答案:

没有答案