ルータの機能(パケットのスウィッチなど)をシミュレートするコンソールアプリケーションがあります。私は各ルータのソケットがどれくらい使われているかを示す簡単なWindowsフォームを作った。各ソケットは異なる容量を持ち、各フォームはソケットに「接続」されていれば、どれくらいの容量が残っているかを示す必要があります。c#コンソールからWindowsフォームを実行し、両方を実行する
これまでの私のコード:今すぐ
static void Main(string[] args)
{
//get number of router's sockets
args = Environment.GetCommandLineArgs();
int socketnumber = Convert.ToInt32(args[2]);
//get sockets' capacity
int[] array = new int[socketnumber];
for (int i = 0; i < socketnumber; i++)
{
array[i] = Convert.ToInt32(args[3 + i]);
}
、LRMは、各ソケットの(または、より正確に、リンクのソケットに取り付けられている)状態を示しWinフォームであるので、私はそれを初期化し、それをパラメータ与えます。
LRM[] lrm = new LRM[socketnumber];
for (int i = 0; i < socketnumber; i++)
{
lrm[i] = new LRM();
lrm[i].Show();
a++;
}
for (int i = 0; i < socketnumber; i++)
{
Console.WriteLine(array[i]);
lrm[i].capacity = array[i];
lrm[i].available = array[i];
lrm[i].WriteCapacity(lrm[i].capacity);
lrm[i].WriteAvailable(lrm[i].available);
}
WriteCapacityとWriteAvailableは、そのようなLRM上の値を更新するために、ルータによって呼び出されるメソッド、以下のとおりです。今
public void WriteAvailable(int ava)
{
MethodInvoker mi = delegate()
{
textBox2.Text = ava.ToString();
};
Invoke(mi);
}
、私が持っている現在の問題:
1)複数のWindowsフォームを実行しますウィンドウの数が変化する(コマンドライン引数で設定される)ときにコンソールから取得し、その機能を維持する(すべて同時に)。
2)Updatin g LRM値。 show()メソッドを使用すると、フォームだけが表示され、値は与えられず、フォームの応答が遅れてすぐにウィンドウエラーが表示されます。 Application.Run()メソッドを使用すると、1つのフォームがうまく動作しますが、他のLRMもルータのコンソールも機能しません。
ソケット情報を表示するには、単一のフォームと 'DataGridView'や' ListView'のようなコントロールを使います。 –