第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用C#從Windows服務(wù)運(yùn)行EXE程序?

如何使用C#從Windows服務(wù)運(yùn)行EXE程序?

倚天杖 2019-10-18 10:54:19
如何EXE使用C#從Windows服務(wù)運(yùn)行程序?這是我的代碼:System.Diagnostics.Process.Start(@"E:\PROJECT XL\INI SQLLOADER\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe");當(dāng)我運(yùn)行此服務(wù)時(shí),該應(yīng)用程序未啟動(dòng)。我的代碼有什么問(wèn)題?
查看完整描述

3 回答

?
BIG陽(yáng)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

這將永遠(yuǎn)行不通,至少在Windows Vista或更高版本中不行。關(guān)鍵問(wèn)題是您試圖從Windows服務(wù)而不是標(biāo)準(zhǔn)Windows應(yīng)用程序中執(zhí)行此操作。您顯示的代碼將在Windows Forms,WPF或控制臺(tái)應(yīng)用程序中完美運(yùn)行,但在Windows Service中根本無(wú)法運(yùn)行。


Windows Services無(wú)法啟動(dòng)其他應(yīng)用程序,因?yàn)樗鼈兾丛谌魏翁囟ㄓ脩舻纳舷挛闹羞\(yùn)行。與常規(guī)Windows應(yīng)用程序不同,服務(wù)現(xiàn)在在隔離的會(huì)話中運(yùn)行,并且禁止與用戶或桌面進(jìn)行交互。這樣就沒(méi)有地方可以運(yùn)行該應(yīng)用程序。


這些相關(guān)問(wèn)題的答案提供了更多信息:


引發(fā)Timer事件時(shí),Windows Service如何啟動(dòng)進(jìn)程?

Windows中的哪個(gè)進(jìn)程是用戶特定的?

Windows服務(wù)(允許與桌面交互的服務(wù))

到目前為止,您可能已經(jīng)發(fā)現(xiàn),解決問(wèn)題的最佳方法是創(chuàng)建一個(gè)標(biāo)準(zhǔn)的Windows應(yīng)用程序而不是服務(wù)。這些文件設(shè)計(jì)為由特定用戶運(yùn)行,并與該用戶的桌面相關(guān)聯(lián)。這樣,您可以使用已經(jīng)顯示的代碼隨時(shí)運(yùn)行其他應(yīng)用程序。


假設(shè)您的控制臺(tái)應(yīng)用程序不需要任何接口或任何輸出,另一種可能的解決方案是指示該過(guò)程不要?jiǎng)?chuàng)建窗口。這將防止Windows阻止您創(chuàng)建進(jìn)程,因?yàn)樗鼘⒉辉僬?qǐng)求創(chuàng)建控制臺(tái)窗口。您可以在有關(guān)相關(guān)問(wèn)題的答案中找到相關(guān)代碼。


查看完整回答
反對(duì) 回復(fù) 2019-10-18
?
蠱毒傳說(shuō)

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以從Windows任務(wù)計(jì)劃程序中使用此工具,有許多類(lèi)似TaskScheduler的庫(kù)可以為您提供幫助。


例如,考慮我們要計(jì)劃一個(gè)任務(wù),該任務(wù)將在五秒鐘后執(zhí)行一次:


using (var ts = new TaskService())

        {


            var t = ts.Execute("notepad.exe")

                .Once()

                .Starting(DateTime.Now.AddSeconds(5))

                .AsTask("myTask");


        }

notepad.exe將在五秒鐘后執(zhí)行。


有關(guān)詳細(xì)信息,請(qǐng)?jiān)L問(wèn)Wiki。


如果您知道該程序集中需要哪個(gè)類(lèi)和方法,則可以這樣自己調(diào)用它:


        Assembly assembly = Assembly.LoadFrom("yourApp.exe");

        Type[] types = assembly.GetTypes();

        foreach (Type t in types)

        {

            if (t.Name == "YourClass")

            {

                MethodInfo method = t.GetMethod("YourMethod",

                BindingFlags.Public | BindingFlags.Instance);

                if (method != null)

                {

                    ParameterInfo[] parameters = method.GetParameters();

                    object classInstance = Activator.CreateInstance(t, null);


                    var result = method.Invoke(classInstance, parameters.Length == 0 ? null : parameters);


                    break;

                }

            }


        }


查看完整回答
反對(duì) 回復(fù) 2019-10-18
  • 3 回答
  • 0 關(guān)注
  • 2097 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)