Çözüldü C# uygulamamda komut iki kez çalışıyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

404631

Hectopat
Katılım
24 Aralık 2020
Mesajlar
3.138
Makaleler
1
Çözümler
30
[CODE lang="csharp" title="Kod"]void cmdProcess(string command)
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();

cmd.StandardInput.WriteLine(command);
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
}

string appExec;
void installApps(string appUrl, string appFolder)
{
using (WebClient wc = new WebClient())
{
wc.DownloadProgressChanged += Wc_DownloadProgressChanged;
wc.DownloadFileAsync(
// Param1 = Link of file
new System.Uri(appUrl),
// Param2 = Path to save
appFolder
);
}
appExec = "start" + " " + appFolder;
}

private void Wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
if (e.ProgressPercentage == 100)
{
butterFly_Progress.Value = 0;
Thread.Sleep(1000);
if (e.ProgressPercentage == 100)
{
cmdProcess(appExec);
}
}
else
{
butterFly_Progress.Value = e.ProgressPercentage;
}
}

private void Download_ButterFly_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
installApps("https://github.com/iAlq/ButterFly/releases/download/v0.2.0-alpha/SetupButterfly.exe.exe", "C:\\Users\\alp\\Desktop\\SetupButterfly.exe");
}[/CODE]
 
Çözüm
@Katan hocam sorunu çözdüm çözümü ise bırakıyorum sonra gelecek arkadaşlar için:
[CODE lang="csharp" title="Çözüm" highlight="24, 35-39"]void cmdProcess(string command)
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();

cmd.StandardInput.WriteLine(command);
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
}

string appExec;
void installApps(string appUrl, string appFolder)
{
using (WebClient wc = new WebClient())
{
wc.DownloadProgressChanged += Wc_DownloadProgressChanged;
wc.DownloadFileCompleted += Wc_DownloadFileCompleted;
wc.DownloadFileAsync(
// Param1 = Link of file
new System.Uri(appUrl),
// Param2 = Path to save
appFolder
);
}
appExec = "start" + " " + appFolder;
}

private void Wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
butterFly_Progress.Value = 0;
cmdProcess(appExec);
}

private void Wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
butterFly_Progress.Value = e.ProgressPercentage;
}[/CODE]
2 kere çalışıyordan kastınız uygulamayı indirirkenmi CMD'yi açarkenmi bir sürü olay var hocam kodunuzda belirtmeniz gerek.
 
Cmd komutları ile indirdiğim uygulamayı silent bir şekilde çalıştırmak istiyorum ama uygulamayı iki kez başlatıyor.
if (e.ProgressPercentage == 100)
{
butterFly_Progress.Value = 0;
Thread.Sleep(1000);
if (e.ProgressPercentage == 100)
{
cmdProcess(appExec);
}
}
Bu kısımdan olabilir mi?
 
if (e.ProgressPercentage == 100)
{
butterFly_Progress.Value = 0;
Thread.Sleep(1000);
cmdProcess(appExec);
}

Böyle deneyin hocam birde.
 
cmdProcess fonksiyonu iki kere mi tetikleniyor? Eğer öyleyse...

C#:
//global değişken
bool durum=false;

if (e.ProgressPercentage == 100 && dumum==false)
{
    cmdProcess(appExec);
    durum = true;
}
 
@Katan hocam sorunu çözdüm çözümü ise bırakıyorum sonra gelecek arkadaşlar için:
[CODE lang="csharp" title="Çözüm" highlight="24, 35-39"]void cmdProcess(string command)
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();

cmd.StandardInput.WriteLine(command);
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
}

string appExec;
void installApps(string appUrl, string appFolder)
{
using (WebClient wc = new WebClient())
{
wc.DownloadProgressChanged += Wc_DownloadProgressChanged;
wc.DownloadFileCompleted += Wc_DownloadFileCompleted;
wc.DownloadFileAsync(
// Param1 = Link of file
new System.Uri(appUrl),
// Param2 = Path to save
appFolder
);
}
appExec = "start" + " " + appFolder;
}

private void Wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
butterFly_Progress.Value = 0;
cmdProcess(appExec);
}

private void Wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
butterFly_Progress.Value = e.ProgressPercentage;
}[/CODE]
 
Çözüm

Yeni konular

Geri
Yukarı