首页 > 其他分享 >vb.net 4.0 模拟支持4.5 task.run

vb.net 4.0 模拟支持4.5 task.run

时间:2024-01-25 10:12:42浏览次数:26  
标签:4.5 Dim vb task End Sub tcs New Function

TaskEx.Run是自定义的方法,为了使.net4.0也支持.net4.5的 task run语法。

代码未经测试

 Class TaskEx  '4.0模拟 task.run

        Public Shared Function Run(ByVal action As Action) As Task
            Dim tcs = New TaskCompletionSource(Of Object)()
            Dim t As New Thread(Sub()
                                    Try
                                        action()
                                        tcs.SetResult(Nothing)
                                    Catch ex As Exception
                                        tcs.SetException(ex)
                                    End Try
                                End Sub) With {.IsBackground = True}
            t.Start()

            Return tcs.Task
        End Function

        Public Shared Function Run(Of TResult)(ByVal [function] As Func(Of TResult)) As Task(Of TResult)
            Dim tcs = New TaskCompletionSource(Of TResult)()
            Dim t As New Thread(Sub()
                                    Try
                                        tcs.SetResult([function]())
                                    Catch ex As Exception
                                        tcs.SetException(ex)
                                    End Try
                                End Sub) With {.IsBackground = True}
            t.Start()
            Return tcs.Task
        End Function

        Public Shared Function Delay(ByVal milliseconds As Integer) As Task
            Dim tcs = New TaskCompletionSource(Of Object)()
            Dim timer = New System.Timers.Timer(milliseconds) With {
            .AutoReset = False
        }
            AddHandler timer.Elapsed, Sub()
                                          timer.Dispose()
                                          tcs.SetResult(Nothing)
                                      End Sub
            timer.Start()
            Return tcs.Task
        End Function
    End Class

  

标签:4.5,Dim,vb,task,End,Sub,tcs,New,Function
From: https://www.cnblogs.com/MadeInChinese/p/17986415

相关文章

  • C#----Task.Run
    在C#中,Task.Run(()=>{...})用于创建并启动一个在后台线程上运行的任务。Task.Run方法接受一个委托参数,该委托包含要在后台线程上执行的代码。使用lambda表达式可以方便地定义这个委托。以下是一个示例:Task.Run(()=>{//在后台线程上执行的代码Console.Wr......
  • FutureTask源码阅读
    目录简介例子代码分析成员变量方法参考链接本人的源码阅读主要聚焦于类的使用场景,一般只在java层面进行分析,没有深入到一些native方法的实现。并且由于知识储备不完整,很可能出现疏漏甚至是谬误,欢迎指出共同学习本文基于corretto-17.0.9源码,参考本文时请打开相应的源码对照,否则......
  • VB6的OfficeMenu控件 - 开源研究系列文章
          这次将原来VB6中喜欢和使用到的OfficeMenu的控件做一个使用介绍。      上次介绍了VB6中的控件引擎,但是那个只针对基本的控件,这个OfficeMenu控件在当时是收费的,笔者找度娘好不容易才下载到一个免费版本,而且使用起来也非常的方便,在当时那个年代是笔者对于VB6中......
  • Task3
    Smiling&Weeping----一个影子爱上另一个影子,这一个怦然心动,那一个浑然不知 学习1.Git内部原理总结笔记:Git是一个分布式版本控制系统,其内部原理涉及到许多关键概念和数据结构。以下是一些关键点的总结:分布式版本控制:Git是一种分布......
  • VBA003 VLOOKUP関数の使い方
    VLOOKUP関数の構文=VLOOKUP(検索値,範囲,列番号,検索の型)例えば、=VLOOKUP(A3,商品マスタ!A:C,2,FALSE)VLOOKUP関数には4つの引数(ひきすう)がありますが、ポイントとなるのは1つめ~3つめの引数です。それぞれ以下のような意味があります。[検索値]......どのデータで[範囲]......
  • windows 设置定时任务 - schtasks
    主要参考此blog: https://blog.csdn.net/rimke/article/details/133740041命令:schtasks/create/SCdaily/ST16:02/TNdailyBreakingNews/TRC:\Users\Administrator.DESKTOP-S92EN3R\Desktop\dailyBreakingNews.exe 在cmd中执行完成此命令后,可以在任务计划程序中......
  • VBA002 全角文字・半角文字を相互変換する方法
    StrConv関数の使い方StrConv(文字列,変換方法)変換方法は全角文字・半角文字の相互変換以外にもいくつかあるので、表形式で一覧にしました。No 値 意味1 vbUpperCase 大文字に変換2 vbLowerCase 小文字に変換3 vbProperCase 各単語の先頭の文字を大文字に変換4 vbWi......
  • VBA001 String、Space関数
    VBAで全角スペースを指定数追加する(String)VBAで半角スペースを指定数追加する(Space)1,String関数の使用方法構文String(Number,Character)説明Number:文字をいくつ並べるのかを整数値で指定します。Character:文字の文字コード、または文字列を指定します。この文字が引数Nu......
  • 题解 CF653F Paper task
    CF653FPapertask给定一个长度为\(n\)和括号串,求本质不同的合法括号串个数。\(n\le5\times10^5\)。考虑如果不是求本质不同,可以想到DP。设\(f_{i}\)表示以\(i\)结尾的括号串数,容易发现\(f_{i}=f_{t_{i}-1}+1\),其中\(t_{i}\)表示与\(i\)匹配的左括号位置。用栈......
  • C# Task 异步的一些流程简单测试 Task 测试 异步测试
    测试程序:publicclassTAKS_TEST{privatereadonlyDictionary<int,Task<T_TEST>>DataDic=newDictionary<int,Task<T_TEST>>();privateT_TESTGetRes(inti){Thread.Sleep(i*1000);returnnewT_TEST(){......