質問: new a(); Task.Run(() => { A.Start(); }); //Tick しない。 A.Start(); //Tick する。 } } ```
回答: 自己解決済みですが、原因説明を。 * `System.Windows.Forms.Timer`はUIスレッド上で実行を開始し、UIスレッド上で呼び出されます。実行したスレッドがUIスレッド出なかった場合は呼び出しようがないため動作しません。 * `System.Timers.Timer`はスレッドプールから呼び出されます。どのスレッドからでも実行可能です。 というわけで質問文のコードに関して言えば、`Task.Run()`から実行する意味はあまりなく、メインスレッドから実行すればいいでしょう。