private [COLOR=Red]static [/COLOR]void device_PcapOnPacketArrival(object sender, Tamir.IPLib.Packets.Packet packet)
{
}
как в C# из события получить доступ к компоненту на форме?
Здравствуйте. У меня такая проблема: в C# происходит событие в классе, подключенном через DLL. но не получается из этого события обратиться например к компоненту на форме textbox1, ни даже к переменной, объявленной в Program.cs
Проверь какой у компанентов доступ в дизайнере формы, доджен быть public:)
попробовал, не катит. Препод говорит, что вроде дело в том, что событие запускается в другом потоке. к обычной переменной ведь тоже нет доступа
Телепаты в отпуске.
Код в студию:)
Цитата:
private static void device_PcapOnPacketArrival(object sender, Tamir.IPLib.Packets.Packet packet)
{
}
{
}
подписываюсь на него в:
Цитата:
private void button2_Click(object sender, EventArgs e)
{
device = devices[1];
//Register our handler function to the
//'packet arrival' event
device.PcapOnPacketArrival += new SharpPcap.PacketArrivalEvent(device_PcapOnPacketArrival);
{
device = devices[1];
//Register our handler function to the
//'packet arrival' event
device.PcapOnPacketArrival += new SharpPcap.PacketArrivalEvent(device_PcapOnPacketArrival);
и в событии недоступны компоненты, которые на форме. Объявление события брал из примера. Может неправильно объявил, или не в том месте. Препод говорит, что событие запускается в другом процессе, и поэтому надо каким-то образом использовать делегаты, для связи
Код:
ЗЫ. Не работает оказывается((( теперь компоненты доступны, но при обращении выводит ошибку "Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on." То есть похоже это связанно как раз с тем, что компоненты выполняются в разных потоках
Цитата: Kondor775
"Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on." То есть похоже это связанно как раз с тем, что компоненты выполняются в разных потоках
Использовать связку InvokeRequired и BeginInvoke/Invoke. Тут примеры использования были в соседних ветках.
Разобрался. Огромное спасибо!