サーバー/マルチクライアント チャット プログラムを作成しようとしています。クライアント側のプログラムは完全に機能します。問題はサーバーにあります。[接続] ボタンをクリックすると、クライアントはサーバーに接続する必要がありますが、
An unhandled exception of type 'System.Reflection.TargetParameterCountException' occurred in mscorlib.dll
Additional information: Parameter count mismatch.
が起動し、サーバー プログラムがクラッシュします。サーバー側のプログラムでクライアントのIPとニックネームを2つのListBoxに保存したいので、これが起こると確信しています。私のイベント:
private void server_OnClientConnected(object Sender, ConnectedArguments R)
{
server.BroadCast(R.Name + " has connected."); //That message is shown at client's chat box.
//So there is no problem with the connection.
UpdateListbox(un_list, R.Name, false); //Here is the problem. It works when I comment out them,
//without updating the list boxes of course
UpdateListbox(ip_list, R.Ip, false);
}
クライアントが接続されたとき。
private void server_OnClientDisconnected(object Sender, DisconnectedArguments R)
{
server.BroadCast(R.Name + " has disconnected.");
UpdateListbox(un_list,R.Name,true);
UpdateListbox(ip_list, R.Ip, true);
}
クライアントが切断されたとき。
私の方法:
public delegate void UpdateList(ListBox box,object value,bool Remove);
private void UpdateListbox(ListBox box, object value, bool Remove)
{
if (box.Dispatcher.CheckAccess())
{
if (value != null && Remove==false)
box.Items.Add(value);
else if (value != null && Remove==true)
box.Items.Remove(value);
}
else
{
box.Dispatcher.Invoke(new UpdateList(UpdateListbox), value);
}
}
前もって感謝します、ジョージ