【问题标题】:How to control response timeout in vb .net?如何控制 vb .net 中的响应超时?
【发布时间】:2013-10-27 18:35:55
【问题描述】:

我有一个 vb .NET windows 应用程序。我在其中调用外部函数并接收响应。

大部分时间它都在工作。但是在某些客户端机器中,响应没有在适当的时间出现。 这需要更多时间。我的问题是如何设置超时,例如30 秒,以便我处理未到来的响应并继续下一步。

我的部分代码如下所示。

' my response class
Dim MyResponse as new clsResponse 

' calling outside function which returns response.
MyResponse = Obj.SendRequest(MyRequest) 

'' Some code Here

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    我想你可以使用 Task.Wait:

    What's the difference between Task.Start/Wait and Async/Await?

    并传入等待参数。

    http://msdn.microsoft.com/en-us/library/dd235606.aspx

    如果任务在期望的时间内完成,则返回 true。

    另请参阅:任务仍将在后台运行,尽管您的功能将继续

    Does Task.Wait(int) stop the task if the timeout elapses without the task finishing?

    Task t = new Task(() =>
            {
                MyResponse = Obj.SendRequest(MyRequest);
            });
    t.Start();
    bool finished = t.Wait(3000);
    

    我认为在 VB .NET 中会是:

    Dim t as Task = new Task( Sub() MyResponse = Obj.SendRequest(MyRequest) )
    t.Start()
    Dim finished as Boolean = t.Wait(3000)
    

    【讨论】:

    • 由于OP没有给出框架,需要注意的是,这种方法只适用于.NET 4.0或更高版本。对于 .NET3.5 或更低版本,这必须直接使用线程来实现。
    • 实际上我使用的是 .NET 3.5。任务不可用?如果不可能,请告诉我实现线程?
    • .NET 4 已经推出三年半了,在软件工程中简直就是狗的生活。是时候继续前进了,你找到了一个很好的理由。
    • 完全正确。现在我在 .NET 4 中工作。这是对旧项目的一些改造。
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2020-02-16
    • 1970-01-01
    相关资源
    最近更新 更多