等待任务忽略超时

时间:2021-03-15 11:17:07

标签: c# async-await task task-parallel-library

我有一个问题,结果忽略 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;
        }
    }

0 个答案:

没有答案