首页 > 应用开发 > > C# 怎么以这种方式在进程间通讯?(WPF
我做的一个软件本来要开始做下载的部分了,可是我那天晚上睡觉前突然想把下载的部分独立做成一个小工具,可是我今天仔细想了一下,我应该怎么让那个小工具知道该做什么呢?
我一开始想到了cmd
我可以直接这样:download.exe url path url path url path(好像看起来有一点乱
可是这样就有两个问题了
我突然想让它再下载几个东西怎么办?(他正在下载的情况下
它下载完怎么告诉我?
然后我想到了下面这个方法:
Process p = new Process();
p.StartInfo.FileName = "download.exe";//其它的属性先不要管吧
p.Start();
p.StandardInput.WriteLine("url,path");//给它发送一条指令,让他开始下载
p.StandardInput.WriteLine("url,path");//我突然又想让他下载其它东西了,我在给它一个指令,让它往列表里面添加一个
//中间的代码我删掉了
string s = p.StandardOutput.ReadToEnd();//读取它给我的回复(比如下载完成 下载失败什么的这样主程序这边就没什么问题了,可是对面就有问题了
因为我想要那个分割出去的有UI 所以用了WPF
可是WPF里面 Console.WriteLine(); 好像没有用,那么我要怎么给主程序反馈信息?
而且主程序里面的: p.StandardInput.WriteLine("url,path"); 我这边要怎么接收到这句呢?
FAQ
Q:为什么要这样做?直接做在主程序里面不是就好了吗
A:因为想把它做成一个独立的小工具,我可以平时直接打开cmd 输个:download XXX.XX path 就可以下载了(其实就是想偷懒,以后还需要在哪个小程序里面用到下载可以直接调用
ps:不需要考虑效率,稳定性,反正只传输一点点东西,而且是自己用而已
ps2:我在来问前查过一点进程间通讯的东西,不过我看了一下那几种我都不太喜欢(主要是调用起来都不方便,这个一行就可以用(虽然我不会那样做
还是比较喜欢这种方法,而且我好奇呀 那些方法有很多教你怎么使用的文章.可是这种方法我没有找到什么资料(可能是我没有很好的跟搜索引擎描述才找不到?
ps3:不要告诉我,让我直接用命名通道,socket之类的 我的目的不是快速造出一个工具,我是拿来练习的,然后顺便学一些新东西
ps4:其实我当时还想到一些其它我无法解决的问题,不过我猜查一下都可以找到答案 只有这个我找不到答案
其它的问题(顺便问一下):
1.我可不可以不用webclient?
2.我要怎么解决一些特殊的下载链接(比如磁力链接 ed2k之类的
3.Console.WriteLine();怎么样才可以在wpf中有效?
(排除掉这两个答案:debug.WriteLine();(好像是这个)
在控制台程序里面new一个WPF出来
ps5:其实我已经想到了解决方案,不过我还是很好奇怎么使用这种方式通讯 所以还是来问一下
ps6:刚刚学C# 很多东西不太了解
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1976/viewspace-3124546/ ,如需转载,请注明出处,否则将追究法律责任。