ASP.NET MVC の場合は非同期コントローラを使っていましたが、SignalR では特に何もせずにメソッドを非同期で実行できるようになっています。
仕組みは簡単、Task/Task
public Task<IEnumerable<string>> GetValues() { return Task.Factory.StartNew(() => { Thread.Sleep(5000); return (IEnumerable<string>)new[] { "ほげほげ", "ふがふが", "はうはう" }; }); }
5 秒待ってから値を返すメソッドです。Task
なので async/await を使ってしまいましょう。
public async Task<IEnumerable<string>> GetValues() { await Task.Delay(5000); return new[] { "ほげほげ", "ふがふが", "はうはう" }; }
はい、これでスッキリしましたね。
実行すると 5 秒後にちゃんと値が返ってくるのが確認できます。