2011-10-11 2 views
0

exp, timer [0] = timer0, timer [1] = timer1, timer [2] = timer2의 배열에 저장되는 "foreach dataValue in _dataValues" 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'에 유형 '문자열을'변환 할 수 없습니다 "오류를 제공 도와주세요? "

+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 타이머를 만드는 것은 좋지 않은 생각입니다. 다른 간격을 원하면 단일 타이머로도이를 수행 할 수 있습니다. 가장 짧은 공통 간격으로 하나의 타이머를 만드십시오.

+0

이것은 아마도 고려 될 수있다. 타이머는 꽤 가벼운 객체이며 내부적으로 대기열을 사용합니다. 다음 이벤트에 대해 하나의 대기열과 같습니다. – TomTom

+0

'System.Windows.Forms.Timer'는 내가 가볍게 생각하는 것이 아니다. 각 타이머는 자체 GCHandle을 가지며, 모든 작업에 대해 P/Invoke를 포함하고 파이널 라이저가있는 객체를 생성합니다. 또한 언급 한 공통 큐를 사용하는'System.Windows.Forms.Timer'도 보지 못합니다. – bitbonk

+0

흠, 어쩌면 하나만 쓰지 말고 스레딩에 사용하나요? 코드 예제의 아무 것도 windows.forms를 나타냅니다. 플러스 모든 이름을 당신은 여전히 ​​leightweiht, 미안 해요. p/invokes 윈도우 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] }; 
} 

을 또한, 강력 List<T>를 입력하여 _dataValues 사용의 길이가 고정되어 있지 않은 경우 :

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; } 
    }