调用外部库方法时,超时后任务不会结束

时间:2018-12-13 11:39:03

标签: c# asp.net-mvc multithreading task

我正在尝试调用一个耗时很长的外部库方法,因此我试图对其执行设置超时。我的问题是超时似乎对此没有任何影响...

这是我的代码:

  private void SomethingLong(int refernce)
    {                
            externalLib.externalMethod(reference);

    }

private void button2_Click(object sender, EventArgs e)
    {
        MyLauncher(myReference);
    }

 private async void MyLauncher(int reference)
    {
        Task task = Task.Factory.StartNew(
            () =>
            {
                SomethingLong(reference);
            });
        if (await Task.WhenAny(task, Task.Delay(8)) == task)
        {
            label1.Text = "Task Completed";
        }

        else
        {
            label1.Text = "Timeout";
        }
    }

如果我只是在SomethingLong方法中睡眠就尝试了相同的代码,那么它确实可以工作。但是使用外部库,这给我带来了问题,计时器无效,该方法所花费的时间与没有计时器的时间相同。我怎么了?

0 个答案:

没有答案