2011-08-12 6 views
0

System.Timers.Timerを使用しますが、これはWinFormであるためSystem.Windows.Forms.Timerが既に存在します。 System.Timers.Timer timerOne = new System.Timers.Timer();の代わりにTimer timerOne = new Timer();をSystem.Timers.Timerの使用を強制する(またはSystem.Windows.Forms.Timerを無視して)方法がありますか?C#で意図したタイマーを使用するようにします

+2

あなたは* *でSystem.Timers.Timerを使用しないでください、このより少なくより微妙なヒントを考えてみましょう: –

+0

@HansPassant申し訳ありませんが、私は少しあなたのコメントで混乱しています。私はエイリアスが表示されず、Windows.Formのバージョンとみなされるかもしれないことを理解しています。それ以外の場合は、System.Timers.Timerを使用しないでください。私が理解する限り、System.Windows.Forms.Timerとは異なります。 – Andrew

+1

はい、違います。これは、あなたが書いたほぼすべてのWinforms固有のコードとは非常に互換性がありません。スレッドセーフなWinformsクラスはほとんどありません。 Control.Begin/Invokeでその問題を解決すると、そのタイマーを使用する点が無効になります。 –

答えて

4

使用してタイマー=でSystem.Timers.Timerを追加します。ソースファイルの先頭に移動します。このエイリアスは宣言されているファイル内でのみ動作することに注意してください。必要なファイルごとに追加する必要があります。

1

することはでき常にクラス名を別名:

// Other Includes 
using System.Linq; 
using MyTimer = System.Timers.Timer; 

MyTimer x = new MyTimer(); 
0

もう1つの解決策は、他の解決策ほどのものではなく、独自のクラスを作成してタイマーから継承することです。

using Timer = System.Timers.Timer; 
0

using directiveの別名形式を使用します。そしてあなたのコードの読者がそれを期待しないので完全に綴る理由。
関連する問題