Trong bài viết này chúng ta sẽ tìm hiểu một project đơn giản để giải thích cách làm viêc của lớp Timer và cách viết sự kiện cho điều khiển này. Timer control cho phép bạn thiết lập một khoảng thời gian để thực thi một sự kiện sau một khoảng thời gian...
Trong bài viết này chúng ta sẽ tìm hiểu một project đơn giản để giải thích cách làm viêc của lớp Timer và cách viết sự kiện cho điều khiển này.
Timer control cho phép bạn thiết lập một khoảng thời gian để thực thi một sự kiện sau một khoảng thời gian liên lục. Nó rất hữu dụng khi bạn cần thực thi chắc chắn một chương trình ứng dụng sau một khoảng thời gian chính xác, như khi bạn cần tạo một bản sao lưu (backup) dữ liệu trong vài giờ. Bạn có thể tạo một hàm thực hiện việc sao lưu lại dữ liệu và gọi nó qua một sự kiện sau đó thiết lập thời gian cho nó .
Sử dụng timer control là điều không khó. Để thử với control này bạn cần tạo một ứng dụng Windows Application trong Visual Studio và thêm vào Form 2 button controls. Sau đó thay đổi thuộc tính Text của chúng là Start và Stop như sau
Trong chương trình này tôi đã tạo thêm một file mcb.txt trong thư mục máy của tôi (C:\temp) và bắt đầu ghi lại thời gian sau mỗi khoảng 5 giây.
Bây giờ bạn có thể kéo 1 timer control từ toolbox đến Form. Bạn có thể thiết lập các thuộc tính cho nó trong chương trình của bạn. Chúng ta để nó là 5000 milliseconds hay bằng 5 giây.
Bây giờ bạn Click lên button Event và viết sự kiện Click của timer như bạn thấy trong hình
Bây giờ chúng ta sẽ thêm một FileStream và một đối tượng StreamWriter bên trong lớp. Như bạn đã thấy từ đoạn code, lớp FileStream tạo một file mcb.txt và StreamWriter dùng để ghi nội dung vào file.
- private static FileStream fs = new FileStream(@"c:\temp\mcb.txt", FileMode.OpenOrCreate, FileAccess.Write);
- private static StreamWriter m_streamWriter = new StreamWriter(fs);
- private void Form1_Load(object sender, System.EventArgs e)
- {
- // Write to the file using StreamWriter class
- m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
- m_streamWriter.Write(" File Write Operation Starts : ");
- m_streamWriter.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());
- m_streamWriter.WriteLine(" ===================================== \n");
- m_streamWriter.Flush();
- }
Đoạn code này sẽ thực hiện ghi vài dòng vào 1 file mcb.txt.
Bây giờ ta sẽ viết code cho sự kiện Click của hai button. Khi bạn click vào Start button sẽ thiết lập thuộc tính Enable của timer là true. Sau đó chúng ta thiết lập cho sự kiên click của button Stop để dừng lại sự kiện tick của timer:
- private void button1_Click(object sender, System.EventArgs e)
- {
- timer1.Enabled = true;
- }
- private void button2_Click(object sender, System.EventArgs e)
- {
- timer1.Enabled = false;
- }
Bước tiếp theo bạn có thể viết code cho sự kiện tick của timer
- private void timer1_Tick(object sender, System.EventArgs e)
- {
- m_streamWriter.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());
- m_streamWriter.Flush();
- }
Nếu bạn không có Visual Studio.NET bạn cũng có thể viết đơn giản như vậy và làm theo những bước sau .
Tạo 1 thể hiện của Timer
Phương thức khởi tạo của lớp Timer sử dụng một đối tượng timer. Contructor này được overloaded:
- public Timer()
- public Timer(double)
- Timer myTimer = new Timer(500);
Tick ===> Sự kiện xảy ra khi khoảng thời gian trôi qua
Start ===> Bắt đầu sự kiện tick bởi việc xét Enable là true
Stop ===> Bắt đầu sự kiện tick bởi việc xét Enable là false
Close ===> Giải phóng tài nguyên sử dụng bởi timer
AutoReset ===>Cho biết ở đây sẽ đưa lên Timer sự kiện Tick mỗi khoảng thời gian được chỉ hoặc sự kiện tick được đưa lên lần đầu
Interval ===> Chỉ khoảng thời gian đưa lên sự kiên Tick
Enable ===> Chỉ ở đây ta sẽ đưa lên Timer sự kiện Tick .
Làm thế nào để sử dụng lớp Timer để đưa 1 sự kiện lên trong 1 khoảng thời gian chính xác
- timer1.Interval = 5000;
- timer1.Enabled = true;
- timer1.Tick += new System.EventHandler (OnTimerEvent);
Viết sự kiện một cách thủ công
Sự kiện này sẽ thực thi sau mỗi 5 giây:
- public static void OnTimerEvent(object source, EventArgs e)
- {
- m_streamWriter.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());
- m_streamWriter.Flush();
- }
Đăng nhận xét