我正在尝试调用一个耗时很长的外部库方法,因此我试图对其执行设置超时。我的问题是超时似乎对此没有任何影响...
这是我的代码:
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方法中睡眠就尝试了相同的代码,那么它确实可以工作。但是使用外部库,这给我带来了问题,计时器无效,该方法所花费的时间与没有计时器的时间相同。我怎么了?