管道技术一般采用Window API来实现,最近我试着用C#来实现Windows管道技术,发现C#本身方便的进程线程机制使工作变得简单至极,随手记录一下,推荐给大家。
首先,我们可以通过设置Process类,获取输出接口,代码如下:
Process proc = new Process(); proc .StartInfo.FileName = strScript; proc .StartInfo.WorkingDirectory = strDirectory; proc .StartInfo.CreateNoWindow = true; proc .StartInfo.UseShellExecute = false; proc .StartInfo.RedirectStandardOutput = true; proc .Start(); |
然后设置线程连续读取输出的字符串:
eventOutput = new AutoResetEvent(false); AutoResetEvent[] events = new AutoResetEvent[1]; events[0] = m_eventOutput;
m_threadOutput = new Thread( new ThreadStart( DisplayOutput ) ); m_threadOutput.Start(); WaitHandle.WaitAll( events ); |
线程函数如下:
private void DisplayOutput() { while ( m_procScript != null && !m_procScript.HasExited ) { string strLine = null; while ( ( strLine = m_procScript.StandardOutput.ReadLine() ) != null) { m_txtOutput.AppendText( strLine + "/r/n" ); m_txtOutput.SelectionStart = m_txtOutput.Text.Length; m_txtOutput.ScrollToCaret(); } Thread.Sleep( 100 ); } m_eventOutput.Set(); } |
这里要注意的是,使用以下语句使TextBox显示的总是最新添加的,而AppendText而不使用+=,是因为+=会造成整个TextBox的回显使得整个显示区域闪烁
m_txtOutput.AppendText( strLine + "/r/n" ); m_txtOutput.SelectionStart = m_txtOutput.Text.Length; m_txtOutput.ScrollToCaret(); |
为了不阻塞主线程,可以将整个过程放到一个另一个线程里就可以了
分享到:
相关推荐
免费下载,回贴还能赚积分
运用Visual C#完成基本数字图像处理,C#源代码
完全手册Visual C# 2008开发技术详解
本文就通过一个简单的实例,向大家展示了在Visual C#中如何运用GDI+和Unsafe代码类等技术以实现简单的数字图像处理。
Visual C# 2005 开发技术,压缩包里是PDF格式的高清版本
第01章 C#与.NET Framework简介//第02章 C#程序设计基础//第03章 与用户交互//第04章 常用控件//第05章 类//第06章 抽象类、多态及接口//第07章 处理异常和错误//第08章 XML编程//第09章 应用程序部署..//第10章 ...
Visual c#开发技术大全Visual c#开发技术大全Visual c#开发技术大全Visual c#开发技术大全Visual c#开发技术大全Visual c#开发技术大全
Visual C#2010新增了大量可圈可点的丰富特性,《Visual C# 2010从入门到精通:Step by Step》围绕着基础知识和这些新特性全面介绍了如何利用Visual Studio2010和.NET Framework 4.O编写应用程序。书中沿袭深受读者...
《VISUAL C# 网络编程技术与实践》详细介绍了利用Visual C# 2005进行网络编程的方法和技巧。全书共分13章,主要内容包括网络编程原理、Visual C# 2005的套接字以及多线程的开发、基于各种不同协议的网络编程应用模块...
Visual C# 2005动态网站开发技术与实践
Your hands-on guide to Visual C# fundamentals Expand your expertise—and teach yourself the fundamentals of Microsoft Visual C# 2013. If you have previous programming experience but are new to Visual ...
Visual C# and Databases is a tutorial that provides a detailed introduction to using Visual C# for accessing and maintaining databases. Topics covered include: database structure, database design, ...
《Visual C#.NET 技术内幕》涉及的程序所需的源代码
Visual C# 2008开发技术详解.rar Visual C# 2008开发技术详解.rar
部分则着重介绍了使用visual c# .net创建可用于web的应用程序的方 法和相关技术,介绍了soap和web服务。 本书适合于具有一定的编程经验、想要学习使用visual c# .net编程 语言的开发人员。
Visual C# 示例 源码Visual C# 示例 源码Visual C# 示例 源码Visual C# 示例 源码Visual C# 示例 源码Visual C# 示例 源码Visual C# 示例 源码Visual C# 示例 源码Visual C# 示例 源码Visual C# 示例 源码Visual C# ...
Visual C# 2005网络编程技术与实践 光盘
应用程序设计编制(Visual C#平台)Visual C# .NET试题汇编(程序员级)
共分14章,主要内容包括.NET平台与Visual Studio 2010开发环境、C#语言基础及面向对象程序设计、C#程序设计、C# Web程序设计、C#泛型编程、C#数据库程序设计及ADO.NET等相关知识,并在最后讲解了运用C#处理文件和...