Timer problem C#

5 отговора 200 прегледа
#1

Timer problem C#

Imam njakakuv problem s izvikvane na forma ot tick event na timer. Zna4i problema po podrobno e takuv:
Imam forma kojato se izvikva ot tick eventa na timer na vseki 1 min primerno, i tazi forma se kazva Add i sluji za dobavjane na fail kum edin imagelist na glavnata forma. ot Add formata imam buton browse koito mi otvarja druga moja forma Select Category i tam ot tree view se selectva categorija (toest directory).
Problema vuznikva kogato ot tick eventhandlera si izvikam Add forma s ShowDialog() pri otvarjane na selectCategory formata izbirane na categorija i sled tova ok mi dava njakva greshka :
System.Runtime.InteropServices.SEHException: External component has thrown an exception.

Tova ne moga da go debugna i si njamam i ideja zashto stava taka.
po princip v Add formata ne izpolzvam nikakvi External componenti. Izpolzvam njakoi v glavnata forma no te njamat vruzka. Edinija e PictureButton a drugija e OfficeMenus.

break-a na VS.NET (zelenija red) mi go dava na Application.Run(); na MainForm

da ne bi da ima problem s izvikvane na forma ot tick eventa ili e neshto drugo.
Ako njakoi e sreshtal podoben problem i znae ot kakvo e shte sum mu blagodaren

Отговор
в отговор на RawSteel #2

Re: Timer problem C#

Zabravih da pisha 4e kogato si izvikam Add formata s buton ot mainformata si raboti napulno pravilno i bez problem, problema e samo kogato ja vikam prez tick eventhandler-a na timer

Отговор
в отговор на RawSteel #3

Re: Timer problem C#

Ne mi stana mnogo iasno kakvi vyrshish - bez da gledam code mi idvat 2 nesta:

1. Dali ne se opitvash da vdignesh modalel dialog v event hanlera.

2. VS Main menu ->Debug->Exceptions ...->selectirash .NET ... ->Break in debuger.
taka pone ste vidish kyde gyrmi.

Отговор
в отговор на VBProgrammer #4

Re: Timer problem C#

Ami da, modalen dialog se opitvam da vdigna ot event handlera na MainFormata, a SelectCategory pak go vikam s ShowDialog;
Ima li problem 4e vikam modalen dialog ot event handler i zashto.
I zashto mi dava toja zablujdavasht exception.

Отговор
в отговор на RawSteel #5

Re: Timer problem C#

Има защото модалния то блокира главната нишка на приложението която си стартирал с Application.Run(), където ти работи и таймера.

Ето ти част от хелпа на System.Windows.Forms.Timer класа

A Timer is used to raise an event at user-defined intervals. This Windows timer is designed for a single-threaded environment where UI threads are used to perform processing. It requires that the user code have a UI message pump available and always operate from the same thread, or marshal the call onto another thread.

Отговор
в отговор на rr #6

Blagodarja vi, mnogo mi pomognahte!

:)

Отговор