Asp.net 在没有调试模式的情况下运行Task.Factory.StartNew时不工作

Asp.net 在没有调试模式的情况下运行Task.Factory.StartNew时不工作,asp.net,vb.net,multithreading,Asp.net,Vb.net,Multithreading,这是我第一次实现Task.Factory.StartNew,所以我对它不太了解。我有一个函数,它返回一个布尔值并接受一个参数。现在我已经使用Task.Factory.StartNew调用了我的函数 Task.Factory.StartNew(Function() Myfunction(stringvalue)) 当我处于调试模式时,它工作并执行所有操作。但是,当我在没有调试的情况下运行它时,它就不工作了。我在那个函数中放置了一个响应。Write,但它并没有执行,所以它并没有进入那个函数 下面的

这是我第一次实现Task.Factory.StartNew,所以我对它不太了解。我有一个函数,它返回一个布尔值并接受一个参数。现在我已经使用Task.Factory.StartNew调用了我的函数

Task.Factory.StartNew(Function() Myfunction(stringvalue))
当我处于调试模式时,它工作并执行所有操作。但是,当我在没有调试的情况下运行它时,它就不工作了。我在那个函数中放置了一个响应。Write,但它并没有执行,所以它并没有进入那个函数

下面的函数显示了我正在尝试做什么

我的按钮点击事件

Private Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
 Tasks.Task.Factory.StartNew(Function() Myfunction("Somevalue"))
End Sub
我的职能

Private Function Myfunction(ByVal str as String) as Boolean
Dim isSuccess as Boolean = False
Dim Id as Integer = SomeOtherFunction(str)
If Id > 0 Then
isSuccess =  AnotherFunction(Id)

End If
Return isSuccess
End Function
如果我使用Tasks.Task.Factory.StartNew(Function()Myfunction(“Somevalue”))).Start(),它可以正常工作,并执行该函数预期的操作,但我会收到一个异常提示:“不能对已启动的任务调用Start”


我做错了什么?

你能提供一个例子来说明你的问题吗?@Enigmativity添加了一些我试图做的事情的最小代码doTask.Factory.StartNew工作正常。但是,您的代码并不等待该任务完成。调用
Response.Write
时,处理已完成,响应已发送到浏览器。您应该使用日志记录来检查任务何时以及如何运行。使用此类代码也没有意义——ASP.NET请求已经由单独的线程处理。在不阻塞请求线程的情况下,使用eg
async/await
等待已经异步的操作(如从数据库读取或进行HTTP调用)是有意义的<如果需要为同一请求并行运行两个或多个任务,则应使用code>Task.Run。对于
。Start()
,它不起作用,也不需要
StartNew()
在所有情况下都可以正常工作。但是,通过对已经运行的任务调用
Start()
,该代码导致请求线程中出现异常,该异常被发送到客户端。您能否提供一个示例来说明您的问题?@Enigmativity添加了一些我正在尝试的最小代码doTask.Factory.StartNew工作正常。但是,您的代码并不等待该任务完成。调用
Response.Write
时,处理已完成,响应已发送到浏览器。您应该使用日志记录来检查任务何时以及如何运行。使用此类代码也没有意义——ASP.NET请求已经由单独的线程处理。在不阻塞请求线程的情况下,使用eg
async/await
等待已经异步的操作(如从数据库读取或进行HTTP调用)是有意义的<如果需要为同一请求并行运行两个或多个任务,则应使用code>Task.Run。对于
。Start()
,它不起作用,也不需要
StartNew()
在所有情况下都可以正常工作。但是,通过对已经运行的任务调用
Start()
,该代码在请求线程中导致异常,该异常被发送到客户端。