2011-10-11 10 views
0

私はexp、配列[0] = timer0、timer [1] = timer1、timer [2] = timer2の配列に格納されている_dataValuesのforeach dataValueを取得します。 etc.hereは、私のコードですどのようにCのタイマーの配列をゲートにする

Timer[] timer=new Timer[50]; 

int i = 0; 

foreach (int dataValue in _dataValues) 
{    
    string a="timer" + i;    
    timer[i] =a; 
    i++; 
    timer1[i].Tick += new EventHandler(timer_Tick); 
    timer1[i].Interval = (1000) * (2); 

} 

しかし、それは「暗黙のうちいずれかができますか?[i]のタイマーの値を取得するために、どのように 『System.Windows.Forms.Timer』にタイプ 『string』を変換できませんエラーを提供します助けてください? "

+1

を使用することができますか? – Dani

+0

実際のタイマーは@daniを意味しますか? – sumona

+0

'_dataValues'に格納されているものと' timer1'の値をどこから取得したいのですか? –

答えて

2

あなたが後にしているものを実際に明確ではありません。ここに野生の推測です:

Timer[] timers = new Timer[50]; 
string timerNames = new string[50]; 

int i = 0; 

foreach (int dataValue in _dataValues) 
{  
    timeNames[i] = string.Format("{0}",i); 
    timer[i] = new Timer(); 
    timer[i].Interval = dataValue; 
    i++; 
} 

おそらく50タイマーを作成することは悪い考えです。異なる間隔を持たせたい場合は、これも単一のタイマーで行うことができます。最も短い共通の間隔を持つ1つのタイマーを作成するだけです。

+0

これは翻訳されたかもしれない。タイマーは非常に軽量のオブジェクトであり、すべて内部的にキューを使用します。次のイベントのための1つのキューと同じです。 – TomTom

+0

'System.Windows.Forms.Timer'は私が軽量だと考えるものではありません。各タイマーには独自のGCHandleがあり、すべての操作でP/Invokeが使用され、ファイナライザを持つオブジェクトが作成されます。私もあなたが言及した共通のキューを使用して 'System.Windows.Forms.Timer'を見ません。 – bitbonk

+0

うーん、おそらくこれだけではなく、スレッドの1つを使用しない?コード例のどれもwindows.formsを示していません。あなたの名前はまだありません。それはp/invokesです。なぜなら、Windows OSで内部タイマーメカニズムを使用しているからです。NATURALLY p/invokes - 別の方法では自分自身のスレッドを開始します。 – TomTom

0

Timerの配列に割り当てようとしているのは、ちょうどstringです。試してみてください:

また
Timer[] timers=new Timer[50]; 

for (int index = 0; index < _dataValues.Length; index++) 
{ 
    timers[index] = new Timer() { Interval = _dataValues[index] }; 
} 

、それはあなたの_dataValues利用の長さを固定していない場合、強くList<T>を入力:

List<Timer> timers = new List<Timer>(); 
foreach (int dataValue in _dataValues) 
{   
    timers.Add(new Timer() { Interval = dataValue }); 
} 
1

あなたは、実際のタイマーを作成して怒鳴る構文

public partial class _Default : System.Web.UI.Page 
    { 


     protected void Page_Load(object sender, EventArgs e) 
     { 


      List<Timerx> timers = new List<Timerx>(); 
      foreach (int dataValue in Enumerable.Range(0, 10)) 
      { 
       timers.Add(new Timerx() { TimerName = "Timer"+dataValue }); 
      } 
     } 
    } 
    public class Timerx : Timer 
    { 
     public string TimerName { get; set; } 
    } 
関連する問題