Обращение к объекту из другого потока. И немного WCF - C#
Формулировка задачи:
Здравствуйте! Нужна ваша помощь, прежде небольшой ввод в задачу которую я решаю)
Есть веб служба которая предоставляет пользователю интерфейс для создания различных тасков.
В данный момент есть объект TaskManager к которому обращается служба.
Обобьет отвечает
1) Создание таска и занесение базу данных.
2) Выполнение таска
Я хочу вынести TaskManager в отдельный поток, что бы они работали в независимости друг от друга.
Иными словами пользователь сказал я хочу сделать то-то, служба ему ответила хорошо все будет сделано и передала задачу таск менеджеру который у нас во втором потоке. Пользователь получил ответ что все хорошо вне зависимости от того выполнился таск, завис в очереди или крашнулся с ошибкой.
http://www.cyberforum.ru/attachment....1&d=1484820781
вот схема того как я это вижу...
Вопрос заключает вот в чем...
Когда клиент обращаешься к службе, то получает null referenсe exception, я не силен в много поточности но полагаю что это потому
что мы объявили taskManager в потоке 1 а инициализировали потоке2 как получить доступ к этому объекту Правилен ли такой подход?
Спасибо!
class Service : IService { private TaskManager taskManager; public Service() { Thread taskManagerThread = new Thread(InitializeTaskManager); taskManagerThread .Start(); } private void InitializeTaskManager () { taskManager = TaskManager.Instance; } // Метод который доступен клиенту public void CreateTask1 ( == data ==) { taskManager.CreateTask1( == data == ) } }
Решение задачи: «Обращение к объекту из другого потока. И немного WCF»
textual
Листинг программы
public void CreateDxf(int[] filesId) { int nWorkerThreads; int nCompletionThreads; ThreadPool.GetMaxThreads(out nWorkerThreads, out nCompletionThreads); foreach (var item in filesId) { ThreadPool.QueueUserWorkItem(delegate (object state) { taskManager.CreateDxf(filesId); }); } Console.WriteLine("Таск выполняется. освободили клиента от ожидания..."); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д