如何在事件驅動程序中執行主流程時暫停,只要事件引發並處理,直到事件處理程序結束?如何在C#.NET中進行事件驅動編程?
我創建了下面的程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
namespace EventTest
{
class Program
{
static void Main(string[] args)
{
Timer t = new Timer(2000);
t.Enabled = true;
t.Elapsed += new ElapsedEventHandler(TimerHandler);
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 100000000; j++) ;
Console.WriteLine(i);
}
}
public static void TimerHandler(object source, EventArgs e)
{
Console.WriteLine("Event started");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 100000000; j++) ;
Console.WriteLine("Event "+i);
}
Console.WriteLine("Event finished");
}
}
}
主要方法是應該打印序列號,和一個事件被每2秒燒製。在事件處理期間,程序應該打印「事件已啓動」,「事件1」至「事件5」,然後「事件已完成」,然後返回。
我預期的Main()流停止而TimerHandler()被調用,但是我的輸出顯示,主()和TimerHandler()都同時
0
1
2
3
4
5
6
7
8
9
10
11
Event started
12
Event 0
13
Event 1
14
Event 2
15
Event 3
16
Event 4
Event finished
17
18
19
20
21
22
23
Event started
24
Event 0
25
Event 1
26
Event 2
27
Event 3
28
Event 4
Event finished
29
30
31
32
33
運行是否有可能使主( )方法在事件處理時停止?
另外,小費,如果你想要做的就是讓程序暫停幾毫秒,以便您的測試程序不會運行並完成太快,您可以使用Thread.Sleep(10);睡10毫秒,而不是你的內在循環。 – 2010-07-07 09:56:02