1 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
一般來(lái)說(shuō),如果您正在運(yùn)行一堆安裝并希望按順序運(yùn)行它們,我會(huì)設(shè)置一個(gè)Task.Factory或BackgroundWorker這樣您就不會(huì)阻塞 UI 線程。我還會(huì)確保您使用 MVVM 來(lái)完成這一切,以使其變得更容易。
我首先為安裝設(shè)置一個(gè)幫助程序類。如果使用 MVVM,這個(gè)類的設(shè)置顯然會(huì)有所不同。
public class Programs
{
public string InstallName = "";
public string InstallPath = "";
public bool ExecuteInstall = false;
public int InstallProcessID = 0;
}
然后設(shè)置這些集合,并根據(jù)您的復(fù)選框?qū)⑺鼈儤?biāo)記為運(yùn)行或不運(yùn)行。使用 MVVM,您可以將executeInstall 直接綁定到復(fù)選框。
然后是一個(gè)可以工作并由單獨(dú)的線程調(diào)用的函數(shù)。關(guān)鍵在于調(diào)用以及如何使用 Process
try
{
using (Process myProcess = new Process())
{
myProcess.StartInfo.FileName = <Your program collection object>.InstallPath;
myProcess.Start();
<Your program collection object>.InstallProcessID = myProcess.Id;
myProcess.WaitForExit();
// Any follow up code after install has completed.
}
}
catch (Exception ex)
{
// Error message that uses ex
}
取消按鈕可以查找進(jìn)程 ID,然后終止該進(jìn)程。您還可以創(chuàng)建一個(gè)臨時(shí) int var 來(lái)存儲(chǔ)安裝應(yīng)用程序的當(dāng)前進(jìn)程 ID,而不是讓它在集合中設(shè)置某些內(nèi)容。
這就是總體思路。我建議更多地學(xué)習(xí)程序設(shè)計(jì),因?yàn)?stackoverflow 更多的是一個(gè)解決問(wèn)題的特定地方,而不是如何編寫(xiě)一些東西。
- 1 回答
- 0 關(guān)注
- 138 瀏覽
添加回答
舉報(bào)