Vb.net .NET线程不是独立的吗?

Vb.net .NET线程不是独立的吗?,vb.net,multithreading,asynchronous,async-await,nreco,Vb.net,Multithreading,Asynchronous,Async Await,Nreco,我有一个sub,它获取视频文件的持续时间 Async Sub GetDuration(folder As String) Dim ffP As New FFProbe Dim vInfo As MediaInfo Dim totalSecs As Double = Await Task.Run(Function() vInfo = ffP.GetMediaInfo(filep)

我有一个sub,它获取视频文件的持续时间

Async Sub GetDuration(folder As String)

Dim ffP As New FFProbe
Dim vInfo As MediaInfo

Dim totalSecs As Double = Await Task.Run(Function()
                                           vInfo = ffP.GetMediaInfo(filep)
                                           If vInfo.Duration.TotalSeconds < 10
                                            Thread.Sleep(20000)
                                           End If
                                           Return vInfo.Duration.TotalSeconds
                                         End Function)
异步子GetDuration(文件夹为字符串) 将ffP调暗为新ffP探头 Dim vInfo作为MediaInfo Dim totalSecs As Double=等待任务.Run(函数() vInfo=ffP.GetMediaInfo(filep) 如果vInfo.Duration.TotalSeconds<10 线程。睡眠(20000) 如果结束 返回vInfo.Duration.TotalSeconds 终端功能) 当我在一个短视频(不到10秒)上运行它时,它会使应用程序休眠20秒,正如预期的那样。然而,在浏览器的另一个选项卡上,我在一个长视频(大于10秒)上运行它,而第一个线程仍在睡眠…但它也在睡眠,直到20秒过期/过去。所以两个标签都处于休眠状态,这向我表明它们实际上是同一个线程。当使用异步/等待对时,VB.NET不应该创建单独的线程吗


其主要思想是让它们分别运行,这样多个用户可以彼此独立地获取持续时间。

异步和等待模式不是多线程。使用相同的线程,但该线程中的进程以某种方式进行调度,以使线程不被锁定。在VS中,您可以检查调试期间运行的线程。

尝试执行
wait Task.Delay(TimeSpan.FromSeconds(20.0))
而不是
Thread.Sleep(20000)
。这就是ASP.Net?如果是这样,并且您处于使用会话状态,那么同一会话中的请求将被序列化,即来自第二个选项卡的请求将由IIS排队,直到第一个选项卡完成。Thnx。那么,我如何让它创建单独的线程呢?(想法是让它们分别运行,这样多个用户可以获得持续时间)多个用户将处于不同的会话中,因此这不应该是一个问题。要测试而不是使用第二个选项卡,请使用新的专用浏览窗口或不同的浏览器&看看是否发生了相同的情况。请看这个问题:Thnx。那么,我如何让它创建单独的线程呢?(想法是让它们分别运行,这样多个用户可以获得持续时间)我不是VB专家,但.net支持并行操作。应该有一个VB等价物: