Растет количество дескрипторов при обработке событий
От: Flammable Россия  
Дата: 12.01.11 09:20
Оценка:
Столкнулся с интересной проблемой: программа с нижеприведенным кодом каждую секунду создает новый дескриптор и не закрывает его. Количество дескрипторов мониторится через Диспетчер задач.
В принципе, это пока ни к чему страшному не приводило, но мне кажется, это не есть хорошо.

using System;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsEventsTest
{
    public partial class Form1 : Form
    {
        Thread UpdaterThread;
        event UpdateHandler eUpdate;
        EventArgs e = null;
        delegate void UpdateHandler(EventArgs e);
        delegate void UpdateCallback();
        UpdateCallback UpdaterCallback;

        public Form1()
        {
            InitializeComponent();
            UpdaterCallback = new UpdateCallback(OnUpdate);
            eUpdate += new UpdateHandler(eUpdateHandler);

            UpdaterThread = new Thread(Updater);
            UpdaterThread.IsBackground = true;
            UpdaterThread.Start();
        }

        void Updater()
        {
            while (true)
            {
                eUpdate(e);
                Thread.Sleep(1000);
            }
        }

        void eUpdateHandler(EventArgs e)
        {
            if (InvokeRequired == true)
            {
                try { Invoke(UpdaterCallback); }
                catch { Console.WriteLine("Fail"); }
            }
            else
            {
                Console.WriteLine("Update tick");
            }
        }
        void OnUpdate()
        {
            Console.WriteLine("Update tick");
        }
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.