라우터 기능 (패킷 스윙 등)을 시뮬레이트하는 콘솔 응용 프로그램이 있습니다. 나는 각 라우터의 소켓이 얼마나 많이 사용되는지를 보여주는 간단한 Windows Form을 만들었다. 각 소켓은 용량이 다르고 소켓에 "연결"된 각 양식에는 용량을 표시해야합니다. 지금까지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은 각 소켓 (또는, 더 정확하게, 링크의 소켓에 부착 된) 상태를 표시하는의 WinForm, 그래서 나는 그것을 초기화하고 매개 변수 제공합니다.
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) 여러 창 양식을 실행 콘솔에서 가져오고 기능을 유지 (모두 동시에), 창 형식 수가 다를 때 (명령 줄 인수로 설정)
2) Updatin g LRM 값. show() 메소드를 사용할 때 폼을 표시하고, 값을주지 않으며, 폼이 응답을 멈추자 마자 windows 오류가 발생합니다. Application.Run() 메서드를 사용하면 한 양식이 잘 실행되지만 다른 LRM이나 라우터 콘솔은 작동하지 않습니다.
소켓 정보를 표시하려면 'DataGridView'또는 'ListView'와 같은 단일 폼과 컨트롤을 사용하십시오. –