1
Answer

Threads

pat27

pat27

20y
2.6k
1
hello, i have a question to the following code sample: using System; using System.Runtime.InteropServices; using System.Threading; class Test { static AutoResetEvent evt; static int count = 1; static void Main(string[] args) { if (args.Length > 0) { try { count = int.Parse(args[0]); } catch {} } evt = new AutoResetEvent(false); Timer t = new Timer(new TimerCallback(TimerCallback), null, 0, 5000); evt.WaitOne(); } static void TimerCallback(object state) { Console.WriteLine("Enumerating windows at {0:t}...", DateTime.Now); EnumWindows(new EnumWindowsProc(EnumWindowsCallback), IntPtr.Zero); if (--count == 0) evt.Set(); } static bool EnumWindowsCallback(IntPtr hWnd, IntPtr lParam) { if (hWnd != IntPtr.Zero) { string title = new string('\0', 260); int ret = GetWindowText(hWnd, title, 260); if (ret != 0) Console.WriteLine("0x{0:x8}: {1}", hWnd.ToInt64(), title.Substring(0, ret)); } return true; } [DllImport("user32.dll")] static extern bool EnumWindows(EnumWindowsProc proc, IntPtr lParam); delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam); [DllImport("user32.dll", CharSet=CharSet.Auto)] static extern int GetWindowText(IntPtr hWnd, [Out] string title, int maxCount); } Whereat i can recognize that the Timer runs in an other thread than the main thread? I hope anybody can help me. Thanks in advance. yours sincerely, patrick
Answers (1)