Подождите, пока приложение работает и подождите, пока не закончено Async/TaskC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Подождите, пока приложение работает и подождите, пока не закончено Async/Task

Сообщение Anonymous »

У меня есть приложение Windows Forms, которое в конце концов запустит SteamApp. Я хочу, чтобы мое приложение подождало, пока игра не найдет, и когда оно будет закрыто, чтобы сделать еще кое -что.

Код: Выделить всё

void LaunchViaSteam()
{
try
{
Process.Start(new ProcessStartInfo
{
FileName = "steam://rungameid/1086940",
UseShellExecute = true,
});
}
catch (Exception ex)
{
MessageBox.Show("An error occurred: " + ex.Message);
}
}
< /code>
Я уже пробовал что -то подобное: < /p>
private async void buttonStart_Click(object sender, EventArgs e)
{
Process process = new Process();
process.StartInfo.FileName = SteamDetection.GetSteamDirectory() + "\\steam.exe";
process.StartInfo.Arguments = "steam://rungameid/xxxxxx";
process.Start();
await process.WaitForExitAsync();
}
< /code>
Но это «не работает, как ожидалось». Иногда это просто не ждет, или он ждет, пока пара закроется.    async Task WaitForBG3()
{
textBox1.Text = "Searching";
await Task.Run(async () =>
{

bool found = false;
while (!found)
{
Process[] ProcessList = Process.GetProcesses();
foreach (Process p in ProcessList)
{
if (p.ProcessName.Contains("bg3"))
{
found = true;
}
}
}
});
textBox1.Text = "found and wait for Exit";
await Task.Run(async () =>
{
bool running = false;
while (!running)
{
Process[] ProcessList = Process.GetProcesses();
foreach (Process p in ProcessList)
{
if (p.ProcessName.Contains("bg3"))
{
running = false;
}
else
{
running = true;
}
}
}
});
textBox1.Text = "Exit";
}
< /code>
Когда я тестирую его с блокнотом, он работает так же, как и должно, но когда я использую имя игры, это институтно запускает часть второй задачи. Даже когда игра запускается, работая при вызове < /p>
    private async void buttonStart_Click(object sender, EventArgs e)
{
//LaunchViaSteam();
await WaitForBG3();
//do some mor stuff
}
Есть идеи, почему?

Подробнее здесь: https://stackoverflow.com/questions/795 ... async-task
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»