.net では Thread、タイマーなどマルチスレッドを実現する方法が いくつか用意されています。 今回のデリゲートもそのうちのひとつで、 スレッドの優先順位など細かい制御はできないものの、 任意の型のパラメーターをいくつでも渡せたり、 戻り値が簡単に取れるのはなにかと使い勝手がよいと思います。 実際の使用例は以下の通りです。 // 何かするデリゲート delegate string SomeDelegate(); private void button1_Click(object sender, EventArgs e) { // デリゲートの実装 SomeDelegate some = new SomeDelegate(delegate { // 5 秒後 "hoge" を返します。 System.Threading.Thread.Sleep(5000); return "hoge"