Столкнулся с интересной проблемой: программа с нижеприведенным кодом каждую секунду создает новый дескриптор и не закрывает его. Количество дескрипторов мониторится через Диспетчер задач.
В принципе, это пока ни к чему страшному не приводило, но мне кажется, это не есть хорошо.
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");
}
}
}