私はsomの本を読んで崇拝の音色をしましたが、それでもまだ良い流れのパターンがないと思っています。それはより多くのコーディングが必要になると思いますが、ここで長年のコーダーからsom pointerを得ることを願っています。コードフローの良い習慣?
iv 2つのサンプルを置いて、私がしたいことの1つの速い説明。そしてサンプル2は、それが何かに屈折しているが、右の経路にあるのかどうかわからない。私はEndCommand()を使う。方法かどうか?私はCloseStream()を使用しています。方法かどうか?そしてそのようなもの。
これはあなたの多くのための基本的なものですので、私のサンプルがひどいと間違っている場合私は許して願っていますが、私はもっと学びたいと思っています:)。
最後に、あなたはこれをどのように構築していますか?
サンプル1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace ConsoleGetTestWinform
{
public partial class Form1 : Form
{
private string _command = "tracert www.google.com";
private string _application = "cmd";
private string _exitCommand = "exit";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text += GetTrace();
}
private string GetTrace()
{
Process myprocess = new Process();
System.Diagnostics.ProcessStartInfo StartInfo = new System.Diagnostics.ProcessStartInfo();
StartInfo.FileName = _application;
StartInfo.RedirectStandardInput = true;
StartInfo.RedirectStandardOutput = true;
StartInfo.UseShellExecute = false;
StartInfo.CreateNoWindow = true;
myprocess.StartInfo = StartInfo;
myprocess.Start();
System.IO.StreamReader SR = myprocess.StandardOutput;
System.IO.StreamWriter SW = myprocess.StandardInput;
SW.WriteLine(_command);
SW.WriteLine(_exitCommand);
string x = SR.ReadToEnd();
SW.Close();
SR.Close();
return x;
}
}
}
サンプル2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace ConsoleGetTestWinform
{
public partial class Form1 : Form
{
private string _command = "tracert www.google.com";
private string _application = "cmd";
private string _exitCommand = "exit";
Process process = new Process();
ProcessStartInfo processStartInfo = new ProcessStartInfo();
StreamReader streamReader;
StreamWriter streamWriter;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text += GetTrace();
}
private string GetTrace()
{
StartProcess();
string feedBack = streamReader.ReadToEnd();//reading output form cmd to feedBack
CloseStream();
return feedBack;
}
private void StartProcess()
{
processStartInfo.FileName = _application;
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
processStartInfo.CreateNoWindow = true;
process.StartInfo = processStartInfo;
process.Start();
streamReader = process.StandardOutput;
streamWriter = process.StandardInput;
RunCommand(); //starting trace
}
private void RunCommand()
{
streamWriter.WriteLine(_command);
EndCommand(); //killing cmd
}
private void EndCommand()
{
//exiting cmd
streamWriter.WriteLine(_exitCommand);
}
private void CloseStream()
{
//ending stream
streamWriter.Close();
streamReader.Close();
}
}
}
@Humphreyあなたのwtf/minはこの[提案](http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 "コードレビュー")にとって非常に望ましいでしょう。サポートを表明し、ベータ版に手伝ってください。 :) – greatwolf