я задаюсь вопросом, является ли это хорошей практикой?
номер. Это не хорошо. Иногда, это - все, что Вы имеете, но это не хорошо.
И, каков мог быть более эффективный способ реализовать это?
, Как вещи входят в базу данных во-первых?
лучшее изменение состоит в том, чтобы исправить программы, которые вставляют/обновляют базу данных для выполнения запросов, которые переходят к базе данных и к программе. Тема JMS хороша для такого рода вещи.
следующее лучшее изменение состоит в том, чтобы добавить триггер к базе данных для постановки в очередь, каждый вставляет/обновляет событие в очередь. Очередь могла подать тему JMS (или очередь) для обработки Вашей программой.
план нейтрализации является Вашим циклом опроса.
Ваш цикл опроса, однако, не должен тривиально делать работы. Это должно бросить сообщение в очередь для некоторого другого процесса JDBC, чтобы продолжить работать. Запрос завершения является другим сообщением, которое может быть брошено в очередь JMS. Когда Ваша программа получает сообщение завершения, она абсолютно должна быть закончена с предшествующим запросом JDBC и может остановиться корректно.
Прежде, чем сделать любое из этого, посмотрите на решения ESB. Sun JCAPS или TIBCO уже имеет это. ESB с открытым исходным кодом как Mulesource или Jitterbit можно было уже создать эту функциональность уже и протестированный.
Я полагаю, вы имеете в виду свернуть в системный лоток, потому что вы говорили о значках и всплывающих сообщениях?
Следующий код устанавливает значок на панели задач:
private void SetUpTrayIcon()
{
notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.BalloonTipText = "Ballon minimize text";
notifyIcon.BalloonTipTitle = "Ballon minimize title";
notifyIcon.Text = "Icon hover text";
notifyIcon.Icon = new System.Drawing.Icon(
System.Reflection.Assembly.GetExecutingAssembly()
.GetManifestResourceStream("MyIcon.ico"));
notifyIcon.Click += new EventHandler(HandlerToMaximiseOnClick);
}
Чтобы отобразить значок в лоток (вы можете сделать это, например, в событии изменения состояния окна, сделайте что-то вроде следующего:
if (notifyIcon != null)
{
notifyIcon.Visible = true;
notifyIcon.ShowBalloonTip(2000);
}
Чтобы отобразить баллон при наведении курсора мыши, вы хотите использовать тот же код, что и выше, возможно, в перемещении мыши для значка .
Примечание: ShowBalloonTip перегружен, если вы хотите изменить сообщение в разных точках. Сообщение, отображаемое всплывающим окном, будет учитывать символы новой строки, например Environment.NewLine может быть добавлено к нему.
попробуйте
свернуть
this.WindowState = FormWindowState.Minimized;
свести к минимуму, чтобы увидеть это
Как правильно свернуть в трей приложение C # WinForms?
Пока
Всплывающее окно будет отображать все, что показано в строке заголовка формы (то есть свойством .Text формы). Я не знаю, как сделать его многострочным (если есть способ, он обязательно будет сложным и, вероятно, не стоит хлопот).
Этот предыдущий вопрос дает некоторые ответы на основной вопрос . Ваш набор инструментов содержит элемент управления под названием NotifyIcon - используйте его, чтобы разместить значок на панели задач.