.net 在经过一段时间后从函数返回值?

.net 在经过一段时间后从函数返回值?,.net,asp.net,web-services,.net,Asp.net,Web Services,我在ASP.NET中有一个web服务被一个时间敏感的进程调用。如果web服务运行时间超过N秒,我希望从调用返回,以便时间敏感的操作可以继续。这可能吗?如果可能,代码是什么?异步调用您的web服务 异步调用web服务 让web服务在单独的线程中调用其长期运行部分。然后等待,杀了它,如果时间太长就保释。预先警告一下,这可能会使稀缺的资源陷入困境(例如,数据库连接等),但您也可以解决这一问题 (抱歉代码太快太脏,这是演示版,您应该详细说明并添加类型、Web服务细节等。) dim ResultFromW

我在ASP.NET中有一个web服务被一个时间敏感的进程调用。如果web服务运行时间超过N秒,我希望从调用返回,以便时间敏感的操作可以继续。这可能吗?如果可能,代码是什么?

异步调用您的web服务


异步调用web服务


让web服务在单独的线程中调用其长期运行部分。然后等待,杀了它,如果时间太长就保释。预先警告一下,这可能会使稀缺的资源陷入困境(例如,数据库连接等),但您也可以解决这一问题

(抱歉代码太快太脏,这是演示版,您应该详细说明并添加类型、Web服务细节等。)

dim ResultFromWorker作为字符串
dim DoneWorking作为布尔值
子GetWebServiceMagicNumber
DoneWorking=False
dim t as new thread=addressof(GetWebServiceMagicNumber\u Worker)
t、 开始
dim计数为整数=0

在不进行工作和计数时,让web服务在单独的线程中调用其长期运行部分。然后等待,杀了它,如果时间太长就保释。预先警告一下,这可能会使稀缺的资源陷入困境(例如,数据库连接等),但您也可以解决这一问题

(抱歉代码太快太脏,这是演示版,您应该详细说明并添加类型、Web服务细节等。)

dim ResultFromWorker作为字符串
dim DoneWorking作为布尔值
子GetWebServiceMagicNumber
DoneWorking=False
dim t as new thread=addressof(GetWebServiceMagicNumber\u Worker)
t、 开始
dim计数为整数=0

在不工作和计数的情况下,我考虑到了这一点……我之所以尝试绕开它是为了避免编译引用服务的应用程序。我考虑到了这一点……我之所以尝试绕开它是为了避免编译引用服务的应用程序。哎呀!对于那些期待。。。我忘了在语句“return”TimeOut“之前终止线程。当webservice返回时,它仍然会自行结束,但是如果再次调用,那么如果使用相同的对象2x.Oops,则可能会弄乱共享成员变量!对于那些期待。。。我忘了在语句“return”TimeOut“之前终止线程。当webservice返回时,它仍然会结束,但如果再次调用,则如果使用相同的对象2x,可能会弄乱共享成员变量。
dim ResultFromWorker as String
dim DoneWorking as boolean

sub GetWebServiceMagicNumber
    DoneWorking = False
    dim t as new thread = addressof (GetWebServiceMagicNumber_Worker)
    t.start
    dim count as integer = 0
    while not DoneWorking and Count <100 
        count +=1
        System.Threading.Thread.Sleep(100) ' Important to not kill CPU time
    wend
    if DoneWorking then
        return ResultFromWorker
    else
        return "TimeOut"
    EndIf
end sub

sub GetWebServiceMagicNumber_Worker
    try
        ResultFromWorker = SearchTheWholeWorldForTheAnswer()
    catch ex1 as ThreadAbortException 
        ' ignore - My code caused this on purpose
        ' calling thread should clean up scarce resources, this is borrowed time
    catch ex2 as Exception
        ResultFromWorker = "Error - " & ex.tostring
    finally
        DoneWorking=True
    End Try
end sub