mr_нонсон
(Дмитрий)
06.Декабрь.2020 10:15:53
#1
Есть такой код:
private async void Form1_Load(object sender, EventArgs e)
{
progressBarStatus.Value = 0;
await Task.Delay(500);
progressBarStatus.Value = 20;
await Task.Delay(1500);
progressBarStatus.Value = 50;
await Task.Delay(2500);
progressBarStatus.Value = 50;
var mainForm = new MainForm();
await Task.Delay(500);
progressBarStatus.Value = 100;
await Task.Delay(500);
this.Hide();
mainForm.ShowDialog();
this.Close();
}
произошол баг что открываются 2 формы вместо 1помогите пожалуйста.
AlexP
(Alex P.)
06.Декабрь.2020 10:25:20
#2
Наверно дело не в этом коде, у меня одна открывается.
WindowsFormsApp6.zip (12.1 КБ)
1 лайк
mr_нонсон
(Дмитрий)
06.Декабрь.2020 10:31:43
#3
спасибо за ответ! щас попробую проверить код
mr_нонсон
(Дмитрий)
06.Декабрь.2020 10:34:31
#4
хмм проверьте пожалуйста а это может быть связано что у меня в коде доп строчки:
private async void loader_Load(object sender, EventArgs e)
{
SetLabelStatusText("загружаем формы!");
bunifuProgressBar1.Value = 0;
await Task.Delay(2500);
SetLabelStatusText("делаем фикс!");
bunifuProgressBar1.Value = 20;
if (System.IO.File.Exists("moo.dll"))
System.IO.File.Delete("moo.dll");
await Task.Delay(1000);
bunifuProgressBar1.Value = 50;
SetLabelStatusText("проверяю обновления!");
string address = "https://pastebin.com/raw/hu3qr5d4";
try
{
WebClient webClient = new WebClient();
string text3 = webClient.DownloadString(address);
File.WriteAllText("version.DontDelete", text3);
StreamReader streamReader = new StreamReader("version.DontDelete");
string b = streamReader.ReadLine();
streamReader.Close();
string a = webClient.DownloadString(address);
if (a != b)
{
MessageBox.Show("обаружено обновление!!! для того чтобы обновитя откройте бустапер!!!", "REx оповещение");
}
else
{
SetLabelStatusText1("обновления не обноружены");
}
}
catch
{
SetLabelStatusText1("необнаружен файл проверки");
}
await Task.Delay(2500);
SetLabelStatusText("готовимся!");
bunifuProgressBar1.Value = 50;
var mainForm = new key_system();
await Task.Delay(500);
SetLabelStatusText("запускаю!");
bunifuProgressBar1.Value = 100;
await Task.Delay(500);
this.Hide();
mainForm.ShowDialog();
this.Close();
}
mr_нонсон
(Дмитрий)
06.Декабрь.2020 10:35:27
#5
public void SetLabelStatusText(string value) => Invoke(((Action<string>)((e) => label3.Text = e)), new object[] { value });
public void SetLabelStatusText1(string value) => Invoke(((Action<string>)((e) => label5.Text = e)), new object[] { value });
AlexP
(Alex P.)
06.Декабрь.2020 11:03:40
#7
В той форме, что два раза открывается, можно поставить брекпоинт отладчика в каком-нибудь событии срабатывающем при открытии, и смотреть стектрейс, чтобы понять как сюда попали.
Или
using System.Diagnostics;
...
Debug.WriteLine(new StackTrace().ToString());
и смотреть вкладку Output.
mr_нонсон
(Дмитрий)
06.Декабрь.2020 11:22:45
#8
а почему у точки остоновы ошибка какаято (если тупые вопросы то простите я просто новичок в .net)
AlexP
(Alex P.)
06.Декабрь.2020 11:26:48
#9
Так а что написано при наведении?)
В зависимости от настроек проекта, может быть надо переключиться на Debug сборку.
mr_нонсон
(Дмитрий)
06.Декабрь.2020 11:34:11
#10
простите забыл дебагвключить)
вот что он мне написал
AlexP
(Alex P.)
06.Декабрь.2020 11:36:04
#11
Ну так и смотрите откуда сюда попали в первый и второй раз )
mr_нонсон
(Дмитрий)
06.Декабрь.2020 11:56:27
#12
мне люди с других форумах посоветовали сделать так
private async void loader_Load(object sender, EventArgs e)
{
label3.Text = "Ожидание...";
bunifuProgressBar1.Value = 15;
await Task.Delay(2500); // просто ожидаем 2500 мс
label3.Text = "делаем фикс";
await Task.Factory.StartNew(() =>
{
if (File.Exists("mydll.dll")) File.Delete("mydll.dll");
}); //ожидаем до тех пор пока не удалится файл...
bunifuProgressBar1.Value = 25;
await Task.Delay(1250); // просто ожидаем 1250 мс
bunifuProgressBar1.Value = 40;
label3.Text = "Проверяем обновления...";
await Task.Factory.StartNew(() =>
{
string address = "https://pastebin.com/raw/hu3qr5d4";
try
{
WebClient webClient = new WebClient();
string text3 = webClient.DownloadString(address);
File.WriteAllText("version.DontDelete", text3);
StreamReader streamReader = new StreamReader("version.DontDelete");
string b = streamReader.ReadLine();
streamReader.Close();
string a = webClient.DownloadString(address);
if (a != b)
{
MessageBox.Show("обаружено обновление!!! для того чтобы обновитя откройте бустапер!!!", "REx оповещение");
}
else
{
SetLabelStatusText1("обновления не обноружены");
}
}
catch
{
SetLabelStatusText1("необнаружен файл проверки");
}
});
await Task.Delay(2000); // просто ожидаем 2000 мс
bunifuProgressBar1.Value = 60;
label3.Text = "Готовимся...";
await Task.Delay(2000); // просто ожидаем 2000 мс
label3.Text = "Загрузка формы...";
key_system form1 = await Task.Factory.StartNew(() => new key_system());
await Task.Delay(2000); // просто ожидаем 2000 мс
bunifuProgressBar1.Value = 80;
label3.Text = "Готово";
await Task.Delay(1000); // просто ожидаем 2000 мс
bunifuProgressBar1.Value = 100;
this.Hide();
form1.ShowDialog();
this.Close();
}
но появилась новая проблема
мне кажется виновата эта часть кода
key_system form1 = await Task.Factory.StartNew(() => new key_system());
AlexP
(Alex P.)
06.Декабрь.2020 12:11:07
#14
Так посмотрите откуда вы попадаете на открытие формы во второй раз, зачем гадать?
Это скорее всего плохая идея, с UI надо работать из основного потока.
И непонятно в чем смысл этого изменения.
mr_нонсон
(Дмитрий)
06.Декабрь.2020 12:26:28
#16
там он ссылается только на строчку кода которая включает эту форму, и все!
AlexP
(Alex P.)
06.Декабрь.2020 12:37:40
#17
Не написано что? Stack trace именно это и показывает.
Если оба раза создание происходит отсюда
то надо смотреть ниже как попали сюда и т.д.
mr_нонсон
(Дмитрий)
06.Декабрь.2020 12:39:47
#18
у меня сразу 2 формы открываются
AlexP
(Alex P.)
06.Декабрь.2020 12:54:20
#19
Дык хоть 3, смотрите откуда вызов открытия формы произошел в первый и во второй раз.
mr_нонсон
(Дмитрий)
06.Декабрь.2020 13:41:54
#20
@AlexP посмотрел, оказывается вызов дублируется тобиш 2 форма открывается от form1.ShowDialog(); от которого открылась и 1 форма
mr_нонсон
(Дмитрий)
06.Декабрь.2020 14:02:20
#22
@AlexP ну так что есть идеи?