私はチャットを作成しようとしていますが、基本的に私はどのスレッドを呼び出す関数を使用しました。
私はサーバーが私に送るものを読むことができますが、私は一度だけ書くことができます。私はこれを完了しようとしているが、サーバーに書き込む方法がわからない場合は、サーバ:
(これは前にコンソールアプリケーションフォームに書いてあり、サーバは正常に動作しています...つまり、 。Winforms、Invokes、問題のあるボタン
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Button btn1 = new Button();
btn1.Click += button1_Click;
}
StreamReader sr;
StreamWriter sw;
TcpClient connection;
private void Form1_Load(object sender, EventArgs e)
{
connection = new TcpClient("127.0.0.1", 5000);
sr = new StreamReader(connection.GetStream());
sw = new StreamWriter(connection.GetStream());
}
private void button2_Click(object sender, EventArgs e)
{
Thread t2 = new Thread(Reader);
t2.Start(connection);
}
string msg;
public void Reader(object o)
{
TcpClient con = o as TcpClient;
if (con == null)
return;
while (true)
{
msg = sr.ReadLine();
Invoke(new Action(Output));
}
}
public void Output()
{
ChatScreen.Text = msg;//set the message on the screen
}
string textinput;
private void button1_Click(object sender, EventArgs e)
{
textinput = InputLine.Text;
sw.WriteLine(textinput);// this thing, writes once, multiple clicks wont send a new line to the server :(..the problem is in this button
sw.Flush();
}
}
私は何を思ったことは、複数回クリック..eg btn.Click()を行うことができるようになりますので、ボタンを接続するために..ですかWriteLineメソッドの呼び出しでスレッドを実行します(ただし、私の直感は述べていますボタンを数回クリックするとプログラムが動作するようになります
と話題にし、起こっ(およびデバッグ出力ウィンドウに印刷された)いずれかの例外がありますか? – Timbo
私は自分のコードを1ヶ月前のものにリセットしましたが、今は動作します。私はアプリケーションを閉じるときに、invokeメソッドで例外が発生します。それは普通ですか? –
私が持っている別の問題は、どのように私はwinformsでプライベートメッセージングを作成することができますです。サイドバーに表示されるラベルやボタンを作成したいときは、そのボタンをクリックするとウィンドウが開き、そのメンバーとしかチャットできません!! –