「VB.net Task.ContinueWith Sample」と検索しても、結果にでてくるのはC#ばかり、
C#をVB.netに書き換えようとしてもうまくいかない。
そんな人のために、とりあえず動くサンプルコードを書きました。
フォームにButton1、Label1を配置して、以下のコードを書けばよいです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim result As String Dim context = TaskScheduler.FromCurrentSynchronizationContext Task.Run(Sub() result = GetStringAsync()).ContinueWith(Sub() Label1.text = result, context) End Sub Private Function GetStringAsync() As String System.Threading.Thread.Sleep(1000) Return "Hello " & DateTime.Now.ToString("HH:mm:ss") End Function |
元のC#のコードはこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
private void Button1_Click(object sender, EventArgs e) { var result = ""; var context = TaskScheduler.FromCurrentSynchronizationContext(); Task.Run(() => {result = GetStringAsync(); }).ContinueWith(delegate { label1.Text = result; }, context); } private string GetStringAsync() { System.Threading.Thread.Sleep(1000); return "Hello " + DateTime.Now.ToString("HH:mm:ss"); } |
今まで困っていた方も、これを元にコードを書くことができるでしょう。