我知道有很多像这样的话题,但我读了几乎所有的话,仍然没有答案。所以在开始时我会展示代码。
点击我的应用程序上的按钮后,我打开带有参数打印收据的.exe文件:
string[] Arguments = { ....... };
string arg = "";
for (int i = 0; i < Arguments.Length; i++)
{
arg += "\"" + Arguments[i] + "\" ";
}
string appPath = Directory.GetCurrentDirectory().ToString();
if (File.Exists(ExecutableFilePath))
{
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = ExecutableFilePath,
Arguments = arg,
WorkingDirectory = System.IO.Path.Combine(appPath),
UseShellExecute = false,
RedirectStandardOutput = false,
CreateNoWindow = false,
}
};
proc.Start();
}
实际上,更具体一点就是:
Button.Click方法:
printReceipt方法:
printReceipt.exe代码:
public PrintReceiptForm(string[] Args)
{
InitializeComponent();
this.Load += new EventHandler(PrintReceiptForm_Load);
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted + =new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
}
void PrintReceiptForm_Load(object sender, EventArgs e)
{
if (!worker.IsBusy)
{
worker.RunWorkerAsync();
}
}
我不得不说,这并没有太大变化。我想要实现的是,在用户点击按钮后,ui将在1秒后消失。在这个情况下,当我在receiptList中有150个产品时,我需要等待10秒的应用程序冻结,然后在3-5秒之后才能打印收据。
也许我做错了什么?不是很好的线程,BackgroundWorkers,Process'es等。
谢谢!