nubbeldupp Geschrieben 6. August 2010 Geschrieben 6. August 2010 (bearbeitet) Hi, ich habe wieder ein Problem. Ich möchte eine Variable von Form1 nach Form 2 Durchreichen, aber sobald ich auf Form2 komme, hängt sich der Rechner auf und es hilft nur noch Strg + Alt + Entf... Ich poste mal meinen Code (Der von der Programmierweise, bestimmt nicht der beste ist) Form1: using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Threading; using System.IO; namespace DigiPort { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public int IP; public int Port; public int i; private void btnStart_Click(object sender, EventArgs e) { IP = Convert.ToInt32(tbIP.Text); Port = Convert.ToInt32(tbPort.Text); pb.Minimum = 0; pb.Maximum = Port; pb.Value = 0; pb.Step = 1; Process proc = new Process(); for (i = 1; i <= Port; i++) { if (i <= 9) { string addr = "11.111.111." + IP + " 700" + i; ProcessStartInfo psi = new ProcessStartInfo("telnet", addr); psi.CreateNoWindow = false; proc.StartInfo = psi; proc.Start(); ArrayList arrlstProzesse = new ArrayList(); arrlstProzesse.AddRange( Process.GetProcessesByName("telnet")); if (arrlstProzesse.Count > 0) { Thread.Sleep(1500); SendKeys.Send("xxx"); Thread.Sleep(500); SendKeys.Send("{ENTER}"); Thread.Sleep(500); SendKeys.Send("xxx"); Thread.Sleep(500); SendKeys.Send("{ENTER}"); Thread.Sleep(1000); } Form2 form2 = new Form2(); form2.Show(); this.Hide(); pb.PerformStep(); proc.WaitForExit(); } else { string addr = "11.111.111." + IP + " 70" + i; ProcessStartInfo psi = new ProcessStartInfo("telnet", addr); psi.CreateNoWindow = false; proc.StartInfo = psi; proc.Start(); ArrayList arrlstProzesse = new ArrayList(); arrlstProzesse.AddRange(Process.GetProcessesByName("telnet")); if (arrlstProzesse.Count > 0) { Thread.Sleep(1500); SendKeys.Send("xxx"); Thread.Sleep(500); SendKeys.Send("{ENTER}"); Thread.Sleep(500); SendKeys.Send("xxx"); Thread.Sleep(500); SendKeys.Send("{ENTER}"); Thread.Sleep(1000); } Form2 form2 = new Form2(); form2.Show(); this.Hide(); pb.PerformStep(); proc.WaitForExit(); } } } } } Form2: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Threading; namespace DigiPort { public partial class Form2 : Form { public int IP { get { return IP; } set { IP = value; } } public int i { get { return i; } set { i = value; } } public Form2() { InitializeComponent(); } string path = "C:\\DigiTest.txt"; private void btnOK_Click(object sender, EventArgs e) { if (!File.Exists(path)) { if (checkBox1.Checked) { StreamWriter sw = new StreamWriter("C:\\DigiTest.txt"); sw.WriteLine("IP: 10.150.193." + IP + " Port: " + i + " NICHT ERREICHBAR!"); sw.Close(); Form1 form1 = new Form1(); form1.Show(); this.Hide(); } if (checkBox2.Checked) { StreamWriter sw = new StreamWriter("C:\\DigiTest.txt"); sw.WriteLine("IP: 10.150.193." + IP + " Port: " + i + " KEINE DESCRIPTION!"); sw.Close(); Form1 form1 = new Form1(); form1.Show(); this.Hide(); } if (checkBox3.Checked) { StreamWriter sw = new StreamWriter("C:\\DigiTest.txt"); sw.WriteLine("IP: 10.150.193." + IP + " Port: " + i + " Falsche Description!"); sw.Close(); Form1 form1 = new Form1(); form1.Show(); this.Hide(); } if (checkBox4.Checked) { StreamWriter sw = new StreamWriter("C:\\DigiTest.txt"); sw.WriteLine("IP: 10.150.193." + IP + " Port: " + i + " TEST ERFOLGREICH!"); sw.Close(); Form1 form1 = new Form1(); form1.Show(); this.Hide(); } } else { if (checkBox1.Checked) { StreamWriter sw = File.AppendText("C:\\DigiTest.txt"); sw.WriteLine("IP: 10.150.193." + IP + " Port: " + i + " NICHT ERREICHBAR!"); sw.Close(); Form1 form1 = new Form1(); form1.Show(); this.Hide(); } if (checkBox2.Checked) { StreamWriter sw = File.AppendText("C:\\DigiTest.txt"); sw.WriteLine("IP: 10.150.193." + IP + " Port: " + i + " KEINE DESCRIPTION!"); sw.Close(); Form1 form1 = new Form1(); form1.Show(); this.Hide(); } if (checkBox3.Checked) { StreamWriter sw = File.AppendText("C:\\DigiTest.txt"); sw.WriteLine("IP: 10.150.193." + IP + " Port: " + i + " Falsche Description!"); sw.Close(); Form1 form1 = new Form1(); form1.Show(); this.Hide(); } if (checkBox4.Checked) { StreamWriter sw = File.AppendText("C:\\DigiTest.txt"); sw.WriteLine("IP: 10.150.193." + IP + " Port: " + i + " TEST ERFOLGREICH!"); sw.Close(); Form1 form1 = new Form1(); form1.Show(); this.Hide(); } } } } } Sobald Form2 auf geht, kann ich nix mehr machen und muss via Taskmanager der Prozess beenden. Kann da jmd einen Fehler erkennen... ich habe das Gefühl, das der in einer Schleife hängt, da die CPU Auslasten enorm ansteigt... bloß ich weiß nicht wo xD Bearbeitet 6. August 2010 von nubbeldupp Zitieren
Klotzkopp Geschrieben 7. August 2010 Geschrieben 7. August 2010 Ich vermute, es liegt an WaitForExit, allerdings würde das nicht die hohe Prozessorauslastung erklären. Lass das Programm mal im Debugger laufen, und unterbrich es, wenn es "hängt", dann solltest du im Call Stack sehen können, wo es steht. Zitieren
Rekon1602 Geschrieben 9. August 2010 Geschrieben 9. August 2010 public int IP { get { return IP; } set { IP = value; } } public int i { get { return i; } set { i = value; } } Kann es sein, dass dein Programm beim Form2 daran abstürzt??? Das Funktioniert so doch nicht. Zitieren
Pointerman Geschrieben 10. August 2010 Geschrieben 10. August 2010 Moin! Ich sehe das auch so wie Rekon1602: Du lieferst im getter Deiner Property die Property zurück und das ergibt dann eine wunderbare Endlosschleife. Normalerweise erlaubst Du mit einer Property den Zugriff auf eine private oder protected Variable. Bsp: private int m_IP; public int IP { get { return m_IP; } set { m_IP = value; } } private int m_i; public int i { get { return m_i; } set { m_i = value; } } [/PHP] Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.