Обработка событий дочерних потоков в главном потоке - C#

Узнай цену своей работы

Формулировка задачи:

Многопоточное приложение
Thread thread = new Thread(Start);
thread.Start(port);
Можно ли так сделать? Генерируем событие в Start и обрабатываем в главном потоке. Если да, то как?

Решение задачи: «Обработка событий дочерних потоков в главном потоке»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using System.Threading;
 
namespace GUI_Threads {
    public partial class Form1 : Form {
        
 
        public Form1() {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
        }
 
        void Form1_Load(object sender, EventArgs e) {
            EventGenerator generator = new EventGenerator();
            generator.threadEvent += new EventHandler<ThreadEventArgs>(generator_threadEvent);
            generator.Start();
        }
 
        void generator_threadEvent(object sender, ThreadEventArgs e) {
            string info = string.Format("Event number {0} from Thread {1}", e.EventCount, e.ThreadID);
            this.Invoke((Action)(() => {
                this.Text = info;
            }));
        }
    }
    public class EventGenerator {
        public event EventHandler<ThreadEventArgs> threadEvent = delegate { };
        public void Start() {
            new Thread(() => {
                for (int i = 0; i < 10; i++) {
                    threadEvent(this, new ThreadEventArgs(Thread.CurrentThread.ManagedThreadId, i));
                    Thread.Sleep(1000);
                }
            }){IsBackground = true}.Start();
        }
    }
    public class ThreadEventArgs : EventArgs {
        public readonly int ThreadID;
        public readonly int EventCount;
        public ThreadEventArgs(int id, int count) {
            ThreadID = id;
            EventCount = count;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы