powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поток с низким приоритетом
2 сообщений из 2, страница 1 из 1
Поток с низким приоритетом
    #39411089
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как сделать, чтобы обработка событий связанных с поиском новых устройств работала в отдельном потоке.
Желательно с низким приоритетом, чтобы не тормозить основной код приложения


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

 
using System.Management;

namespace WMIDeviceChangeDetect
{
    public class WMIDeviceChangeDetect
    {

        private static void HandleEvent(object sender, EventArrivedEventArgs e)
        {
            int EventType = int.Parse(e.NewEvent.GetPropertyValue("EventType").ToString());

            //event types: http://msdn.microsoft.com/en-us/library/aa394124%28VS.85%29.aspx
            Console.Write("Win32_DeviceChangeEvent: ");
            switch (EventType)
            {
                case 1:
                    Console.WriteLine("Configuration changed");
                    break;

                case 2:
                 //   Console.WriteLine("Device Arrival");
                    break;

                case 3:
                //    Console.WriteLine("Device Removal");
                    break;

                case 4:
                  //  Console.WriteLine("Docking");
                    break;

                default:
                  //  Console.WriteLine("Unknown event type!");
                    break;
            }
        }

        public static void Main()
        {
            try
            {
                WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent");
                ManagementEventWatcher watcher = new ManagementEventWatcher(query);
                watcher.EventArrived += new EventArrivedEventHandler(HandleEvent);
                watcher.Start();

                Console.WriteLine("waiting for event...");
            }
            catch (ManagementException ex)
            {
                Console.WriteLine("ERROR: " + ex.Message);
            }

            Console.Read();
        }

    }
}

...
Рейтинг: 0 / 0
Поток с низким приоритетом
    #39411108
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создай поток и установи приоритет Thread.Priority
Внутри потока повисни на AutoResetEvent.
Организуй очередь ConcurentQueue
В рабочем потоке отправляй в очередь задание и буди AutoResetEvent.
В твоем потоке как проснешься - разгребай очередь и снова висни на AutoResetEvent.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поток с низким приоритетом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]