|
private void button1_Click(object sender, System.EventArgs e) { //定义线程序 Thread thConvert = new Thread(new ThreadStart(StartConvertData)); thConvert.Start(); }
注意:在测试上面的C#程序时,必须添加如下命名空间
using System.Diagnostics; using System.Threading;
五:健壮的C#调用代码(实际考虑,可放在B/S系统中)
完成第4步的C#测试后,细心的读者,可能看到一点问题,那就是如何得到脚本运行后输出的结果,如何给线程中调用的StartConvertData方法传递参数
1:传递参数,此话说来也可用一篇教程告诉大家线程中方法如何来传递参数,现在就讲一个方案,此种方案很多,我采用一个类,初始化这个类,然后调用该类的方法作为线程执行的方法
2:得到脚本的输出结果,使用Process对象的输出重定向,就是说改变输出方向,使脚本不输出到控制台(MS-DOS窗口),而是重定向输出到C#程序中,并采用线程的异步回调方法,显示脚本运行结果。
添加一个新类,类名为ToPdf
using System; using System.Diagnostics; using System.ComponentModel; using System.Windows.Forms; using System.Data;
namespace Doc2Pdf { public class ToPdf { private string strWord = "";//此处的WORD文件不含路径 private string sPath = ""; public string sExecResult = ""; public bool bSuccess = false;
public ToPdf(string sParamWord,string sParamPath) { strWord = sParamWord; sPath = sParamPath; }
public void StartConvertPDF() { Process proc = new Process(); proc.StartInfo.FileName = "cmd.exe"; proc.StartInfo.WorkingDirectory = sPath; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardInput = true;//标准输入重定向 proc.StartInfo.RedirectStandardOutput = true;//标准输出重定向
proc.Start(); proc.StandardInput.WriteLine("cscript //nologo "+sPath+"ConvertDoc2PDF.js "+sPath+strWord+ " "+sPath); proc.StandardInput.WriteLine("exit"); sExecResult = proc.StandardOutput.ReadToEnd();//返回脚本执行的结果 proc.WaitForExit(); proc.Close();
}
public void 上一页 [1] [2] [3] [4] [5] 下一页 |