利用Visual C#实现Window管道技术

2016-02-19 16:15 5 1 收藏

有了下面这个利用Visual C#实现Window管道技术教程,不懂利用Visual C#实现Window管道技术的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - 编程语言 】

  管道技术一般采用Window API来实现,最近我试着用C#来实现Windows管道技术,发现C#本身方便的进程线程机制使工作变得简单至极,随手记录一下,推荐给大家。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  首先,我们可以通过设置Process类,获取输出接口,代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  

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 + "rn" );   m_txtOutput.SelectionStart = m_txtOutput.Text.Length;   m_txtOutput.ScrollToCaret();  }  Thread.Sleep( 100 ); } m_eventOutput.Set();}

  这里要注意的是,使用以下语句使TextBox显示的总是最新添加的,而AppendText而不使用+=,是因为+=会造成整个TextBox的回显使得整个显示区域闪烁

  

m_txtOutput.AppendText( strLine + "rn" );m_txtOutput.SelectionStart = m_txtOutput.Text.Length;m_txtOutput.ScrollToCaret(); 

  为了不阻塞主线程,可以将整个过程放到一个另一个线程里就可以了

来源:http://www.tulaoshi.com/n/20160219/1611469.html

延伸阅读
文件分割器主要是为了解决实际生活中携带大文件的问题,由于存储介质容量的限制,大的文件往往不能够一下子拷贝到存储介质中,这只能通过分割程序把的文件分割多个可携带小文件,分步拷贝这些小文件,从而实现携带大文件的目的。而合并器的作用则能够把这些分割的小文件重新合并,恢复原来的文件。.Net FrameWork SDK中提供的许多处理文件...
有时,我们需在我们的程序中模拟鼠标的移动、点击等动作。比如,一个再现用户操作的宏,或者一个演示操作方法的Demo程序。那么,我们在.Net中如何实现呢? .Net并没有提供改变鼠标指针位置、模拟点击操作的函数;但是Windows API提供了。其中一个是: [DllImport("user32.dll")]static extern bool SetCursorPos(int ...
网络代理程序的种类非常多,根据代理服务程序代理的协议不同,分成HTTP代理服务程序、FTP代理服务程序等,运行代理服务程序的服务器也就称为HTTP代理服务器和FTP代理服务器。在本节中介绍的Web代理服务程序代理的就是HTTP协议。 一.网络代理的类型及实现原理: 网络代理服务根据工作层次,一般可分为应用层代理、传输层代理和SO...
引言: 微软的新的.NET平台为开发者带来了许多新的诸如GDI+、Globalization之类的编程机制,同时还发明了一门全新的类似Java的编程语言-C#。对于这些新知识,我们应尽快了解、掌握并试图运用到实践项目中去,而通过实例学习的方法无疑是一个非常有效的途径。本文就通过一个简单的实例,向大家展示了在Visual C#中如何运用GDI+和Unsafe...
在前两篇文章中我们讨论了XML文件的读取和写入,但都是基于流模型的解决方案,今天我们就来谈谈在C#中如何实现DOM,DOM确实有它的不足,但在编程工作中它还是不可或缺的技术。下面我们来简单了解一下DOM的相关知识。 DOM的全称是Document Object Model(文档对象模型),它是来自W3C的官方标准,它允许按照W3C标准W3C DOM Level1和W3C...

经验教程

436

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部