У меня есть форма ожидания FormWait
(уведомление о запущенной задаче), которая имеет функцию ShowMessage(string message)
.
Часто происходит в коде:
public RootCall()
{
FormWait.ShowMessage("Begin long task 1...");
ChildCall();
FormWait.CloseForm();
}
public ChildCall()
{
FormWait.ShowMessage("Begin long task 2...");
// some code here
FormWait.CloseForm();
}
FormWait
в корне показывает сообщение пользователю, но до закрывает его на корневом уровне, есть еще ShowMessage
ребенка и CloseForm
ребенка.
У меня есть несколько решений, чтобы решить эту проблему:
Как и в коде, при условии, что методы являются статическими и работают на одном статическом System.Windows.Forms.Form
экземпляре.На каждом ShowMessage
есть статическая переменная, которая увеличивает , а на каждом CloseForm
уменьшает .Поэтому, посмотрев на эту переменную, я могу понять, действительно ли мне нужно закрыть форму (если я или нет на корневом уровне), или это просто вложенный вызов CloseForm
.И для каждой ShowMessage
новой строки, только что обновленной в уже видимой форме.
Для каждого нового вызова ShowMessage
создайте новый экземпляр формы, но это действительно нужно увидеть.Поэтому почти наверняка я не выберу это решение.
Любые идеи, как я могу управлять WaitForm (форма, которая сигнализирует пользователю о долгосрочных задачах) в случае вложенных вызовов, облегчая также жизнь разработчика .?