article search result of 'Windowsform' : 1

  1. 2010.12.04 [Windows form Invoke] System.Timers.Timer 로 windows form 접근하기 (54)

[Windows form Invoke] System.Timers.Timer 로 windows form 접근하기


http://blog.daum.net/starkcb/117

를 보면 System.Timers.Timer (이하 시스템타이머) 로 윈도우 폼에 접근이 안된다는것을 확인할수 있다.

하지만  Invoke메서드 를 이용한 본인의 삽질끝에 발견했다.


SharpDeveloper 사용




Created with colorer-take5 library. Type 'csharp'

/*
 * System.Timers.Timer 로 windows form  접근��기 
 * lang : c#
 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Timers;
using System.Diagnostics;

namespace test
{
    public partial class MainForm : Form
    {
        //��Invoke 를 위한 델리게이트 선언��
        private delegate void transDelegate(string srt);
        
        private TextBox tx = new TextBox();
        private System.Timers.Timer tm;
        
        //델리게이트�� 인스턴스
        private transDelegate d;
        private int testnum = 0;
        
        public MainForm()
        {
            InitializeComponent();        
            
            //간단한 textbox 생성
            tx.SetBounds(0,0,this.Width , this.Height);
            tx.Multiline = true;
            Controls.Add(tx);
            
            //프로그램 종료시 이벤트 등록
            this.Disposed += new EventHandler(MainForm_Disposed);
            
            //시스템 타이머 메소드
            testTimer();
        }
        

        private void MainForm_Disposed(object sender, EventArgs e)
        {
            Trace.WriteLine("exit");
            tm.Stop();
        }
        
        
        private void testTimer()
        {
            //타이머�� 선언과 활용
            tm= new System.Timers.Timer();            
            tm.Interval = 100;
            tm.Start();
            //타이머이벤트 등록
            tm.Elapsed += new ElapsedEventHandler(tm_Elapsed);
            
            //델리게이트�� 활용
            d = new MainForm.transDelegate(tx.AppendText);
        }
        
        
        private void tm_Elapsed(object sender, ElapsedEventArgs e)
        {
            //Invoke 활용 ( 타겟 , 타겟에 대한 매개변��);
            Invoke(d , "sec :  "+testnum +"\r\n");
            testnum ++;
        }
    }
}
Yamecoder 야매코더_
C# 2010.12.04 00:09
Powerd by Tistory, designed by criuce
rss