Существует консольное приложение, которое имитирует функциональность маршрутизатора (пакетное перемещение и т. Д.). Я сделал простую форму Windows, которая должна показать, насколько используется каждый сокет маршрутизатора. Каждый сокет имеет разную емкость, и каждая форма «подключена» к гнезду должна показывать, какая емкость еще доступна.C# запускает оконную форму с консоли и запускает их оба
Мой код до сих пор:
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', чтобы отображать информацию о сокетах. –