c# - 等待任务忽略超时
问题描述
我有一个问题,结果忽略了 5000 毫秒的等待超时并在 .Result 完成时返回它......这导致我的 IIS 崩溃,因为对 IIS 发出的请求都没有超时并创建一个很长的队列和执行时间。
编辑:澄清:如果等待超过 5000 毫秒,它应该返回“123;NK”。
public class Client : IMotorClient
{
private IMotorProxy Link { get; set; }
//private IOfficeGenerator OfficeGenerator { get; set; }
private IOfficeRegistryLegacy OfficeRegistry { get; set; }
public WebInternalGatewayClient(IMotorProxy proxy, IOfficeRegistryLegacy officeRegistry)
{
OfficeRegistry = officeRegistry;
Link = proxy;
}
public string Execute(string host, int port, string command)
{
var officeGuid = OfficeRegistry.GetOfficeGuid(host, port);
var result = "";
var task = Task.Run(() => result = Link.Submit(officeGuid, command).Result);
var value = task.Wait(TimeSpan.FromMilliseconds(5000));
if (!value)
{
result = "123;NK;";
}
return result;
}
}
解决方案
推荐阅读
- javascript - 表单在函数调用时消失
- linux - 如何正确启用 Oracle 数据库上的操作审计?
- c# - 如何在c#中修改xml文件
- scala - 因“juNoSuchElementException:未定义名为“notStartedRefIds”的属性而崩溃
- random - 字典中随机 if 函数中没有用户输入的 MadLib
- python-3.x - 在函数定义中使用 elif 而不是 else 时显示异常的 return 语句
- python - Python - 32 位版本与 64 位版本的位移
- swashbuckle - 来自 adsl.js 的奇怪随机观众错误
- c# - C#,分配内部委托
- scheme - 整数 -> 字符的转换