A maneira correta de verificar se um formulário já foi exibido?

Eu criei um aplicativo de gerenciamento de tarefas e queria implementar a capacidade de dois usuários conversarem sobre tarefas específicas.

EmForm1 Eu tenho um temporizador que verifica no banco de dados para qualquer nova mensagem enviada. Quando uma nova mensagem é encontrada, o formulário de chat aparece mostrando a mensagem.

Até agora, tudo está funcionando como esperado, mas eu tenho apenas um problema.

O problema : Quando uma nova mensagem é encontrada pela primeira vez, a janela de bate-papo é exibida, mas quando outra nova mensagem é encontrada, outra janela é exibida e, para cada nova mensagem, eu tenho uma nova instância da janela de bate-papo criada.

O código que estou usando:

 List<string> tasksToDiscuss = checkForTasksToDiscuss(fullname);

        if (tasksToDiscuss.Count > 0) { 
 // open the chat window directly minimized
 Form14 frm14 = new Form14();
 frm14.get_from = fullname;
 frm14.get_to = tasksToDiscuss[1];
 frm14.get_task_id = int.Parse(tasksToDiscuss[3]);
 // set message as read
 if (setMessageAsRead(tasksToDiscuss[1], fullname, int.Parse(tasksToDiscuss[3])))
                    {
                        // now show the chat window minimized
                        frm14.Show();
                    }

 }

Eu tentei substituir a linha:
frm14.Show(); comfrm14.ShowDialog();

Percebi que quando a nova mensagem é recebida, a janela de chat (form14) é mostrada, e quando outra mensagem é recebida do mesmo usuário, nenhuma nova janela de bate-papo aparece, mas o problema é que depois de fechar a janela de bate-papo, não não aparece mais mesmo quando recebo novas mensagens.

O que eu penso fazer é mudar a janela de chat (Form14.Text) para o nome completo do usuário, e na próxima vez que uma mensagem for recebida, eu verifico se a janela específica já está aberta, então não a abra senão mostro formulário usando o.Show() método.

Esta é a maneira correta de fazer com que a janela não apareça se uma nova mensagem for recebida e for aberta à frente? e Como verificar se uma janela é aberta de acordo com seu texto (texto da barra de título)?

Obrigado por ter tempo lendo a minha pergunta. Qualquer ajuda seria muito apreciada

questionAnswers(2)

yourAnswerToTheQuestion