как да стартирате функция паралелно в Windows приложение

В моето Windows приложение имам една функция, която трябва да изпълнявам на всеки 6 секунди. така че използвам System.windows.forms.Timer лента с инструменти -> Задайте нейния интервал 6000ms и извикайте тази функция на това събитие на таймера

     private void tmrConnectionStatus_Tick(object sender, EventArgs e)
         {
             CheckClientConnectinStatus();
         }

работи перфектно, но когато извиквам друго приложение на Windows чрез функцията по-долу .. не работи, докато или освен ако не се върна от това приложение към основното приложение

                 clsLogs.LogEvent(3, "==============Call to PNS ==============");
                        ProcessStartInfo startInfo = new ProcessStartInfo();
                        startInfo.FileName = strVendorfile; //Vendors exe
                        startInfo.Arguments = "";           //CSV file path

                        clsLogs.LogEvent(1, "SmartTracker to PRINT-N-SPECT:" + System.DateTime.Now);
                        objProcess = Process.Start(startInfo);       
 Lable:
                        Process[] appProc;
                        string strModName, strProcName;
                        strModName = Process.GetCurrentProcess().MainModule.ModuleName;
                        strProcName = "PnS";
                        appProc = Process.GetProcessesByName(strProcName);

                        if (appProc.Length > 0)
                        {
                            Thread.Sleep(5000);
                            goto Lable;
                        }

Искам да знам Има ли някакъв начин да използвам таймер или друг метод, чрез който да работя непрекъснато във фонов режим, дори ако се фокусирам върху друго приложение.


person VARUN NAYAK    schedule 05.09.2014    source източник
comment
Разгледайте това All-about-NET-Timers-A -Сравнение .   -  person Sagar Pilkhwal    schedule 05.09.2014
comment
кой таймер използвате??   -  person Neel    schedule 05.09.2014
comment
както споменах във въпроса си, използвам System.windows.forms.Timer   -  person VARUN NAYAK    schedule 05.09.2014


Отговори (2)


Можете да използвате backgroundworker. Той ще работи във фонов режим.

person Mairaj Ahmad    schedule 05.09.2014

Тази статия предоставя отлично сравнение и трябва да съдържа информацията, от която се нуждаете: Сравняване на класовете на таймера в библиотеката с класове на .NET Framework:

                                    Windows.Forms  System.Timers         System.Threading 
Timer event runs on what thread?    UI thread      UI or worker thread   Worker thread 
Instances are thread safe?          No             Yes                   No 
Familiar/intuitive object model?    Yes            Yes                   No 
Requires Windows Forms?             Yes            No                    No 
Metronome-quality beat?             No             Yes*                  Yes* 
Timer event supports state object?  No             No                    Yes 
Initial timer event schedulable?    No             No                    Yes 
Class supports inheritance?         Yes            Yes                   No

* Depending on the availability of system resources (for example, worker threads) 

Забележка: Има и клас System.Windows.Forms.Timer. Този клас се основава на поддръжка на таймер на операционната система и ако не изпомпвате съобщения в нишката, вашият таймер няма да се появи. Това прави System.Threading.Timer по-полезен в много сценарии.

person Sagar Pilkhwal    schedule 05.09.2014