| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Mалко помощ за VS - C# http://mcu-bg.com/mcu_site/viewtopic.php?f=16&t=9288 |
Страница 1 от 1 |
| Автор: | perro_iv [ Сря Авг 24, 2011 7:28 pm ] |
| Заглавие: | Mалко помощ за VS - C# |
От скоро се занимавам и имам нужда от малко помощ. Става въпрос за следното: Стартирам форма, която е интерфейса на приложението. Създавам инстанция на клас и в класа има събитие, което чрез делегат връща изпълнението в метод, който е дефиниран в класа на формата. Когато делегата върне процеса в метода на формата и се опитам да обновя данните в определена контрола с резултата подаден от обекта на този клас се генерира изключение със съобщение - "... кръстосани нишки". В смисъл не позволява да се обнови контролата, защото "нишката която се опитва да я манипулира е различна от тази която я е създала". Доколкото разбирам този проблем се решава, чрез метода Invoke. Може ли някой принципно да обясни каква е концепцията на подхода чрез този метод. Предварително се извинявам, ако темата не е подходяща за този форум. |
|
| Автор: | sv_shady [ Чет Авг 25, 2011 10:04 am ] | |||||||||
| Заглавие: | Re: Mалко помощ за VS - C# | |||||||||
Ами да с Invoke се прави. Ето един пример:
Този код е от контрола, която съм писал, която наследява класа Control, който пък поддържа полето InvokeRequired. Надявам се това да е достатъчно като код Идеята на кода е следната. Някое събитие ти вика твоята функция, тя се намира върху нишка, различна от тази на главната форма. Проверява се InvokeRequired (тоест дали нишките съвпадат). Ако са различни нишките, тогава се вика BeginInvoke, което казано на прост език кара нишката, в която е създадена контролата, да извика същата функция. При новото извикване InvokeRequired e false и съответно се изпълнява кода нататък. |
||||||||||
| Автор: | perro_iv [ Чет Авг 25, 2011 10:06 pm ] |
| Заглавие: | Re: Mалко помощ за VS - C# |
Ахааа, благодаря! Още веднъж благодаря, кода вече е изпробван успешно. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|