Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Studio Despacker : L
MsGarry's Mod
28.03.2014, 21:39
Hallo Leute ich habe ein richtiges problem am Hals.
Ich benutze Visual Studio Express 2013 und das Problem ist, immer wen ich mein geschriebenes Programm Starten will (Debug Modus) kommt es nicht zur korrekten Ausführung, stattdessen muss ich den Prozess beenden, nur im nicht Debug Modus erscheint das Programm aber mein Pc fiept komplett aus, so das ich gezwungen bin es zu schlissen wen es geht.
"fliept komplett aus"
Ich meine damit das mein PC nicht mehr korrekt arbeite und von wenig bis kaum Befehle engen nimmt und rum spackt.
Ich hoffe ihr könnt mir bei dem Problem helfen, danke.
Dazu müsstest du uns mehr sagen...
Normalerweise passiert so etwas nicht, es sei denn du liest GB weise Daten ein, erstellst/startest Threads im loop oder sendest fake Input an das System.
Eventuell kannst du mehr zu deinem Programm sagen.
Gruß
monky2k6
31.03.2014, 07:02
Schließe mich da Mentos an. Hört sich an als hättest du da irgendwo Murks rein gehauen wie z.B. eine Endlos-Schleife.
Was soll das Programm denn bewerkstelligen?
MsGarry's Mod
03.04.2014, 19:59
danke für die Rückmeldung, das Programm besteht aus 3 Programme die gleichzeitig laufen.
1.versendet Nachrichten.
2 . wartet auf eingehende Nachrichten.
3. Prüft ob die Verbindung noch vorhanden ist und wie der Ping so steht .
1 ist das Haupt Programm.
2 und 3 sind Threads.
3 wird gleich am Anfang gestartet und ist eine endlos schleife.
3 ist auch der Thread der die 2 startet wenn die Verbindung da ist.
Programm 3/Thread 2:
class KontrolKern
{
public static ASCIIEncoding S1 = new ASCIIEncoding();
public static Socket V1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Verbindung
public static Form1 F12 = new Form1();//Formular zur Nachrichten Sendung
public static bool B10,B3;//B10 - N Formular Kontrolle | B3 - Verbindungskontrolle
public static Thread Tr1 = new Thread(new ThreadStart(EM)); // Start des separatem Programms mit dem Eingabe Formular
public static Form2 F13 = new Form2();//Eingabeformulars zur Verbindungseinstellung
public static void Satart() //Überwachungsprogramm einzelner Funktionen /Also der der der Eintrittspunkt
{ while (Program.Aus)
{
if(V1.Connected)
{
B3 = true;
}
else
{
B3 = false;
}
if (!B3)
{
Console.Title = "Chat 1.1 - Nicht Verbunden";
try
{
F12.Close();
F12 = null;
}
catch (Exception)
{
}
}
else
{
byte[] P2 = new byte[35];
bool jo = false;
try
{
char[] ip = Convert.ToString(V1.LocalEndPoint).ToCharArray();
Ping P1 = new Ping();
string IP2 = "";
for (int i = ip.Length - 1; i >= 0; i--)
{
if (jo)
{
IP2 = ip[i] + IP2;
}
else
{
if (ip[i] == ':')
{
jo = true;
}
}
}
PingReply I = P1.Send(IP2, 100, P2);
Console.Title = "Chat 1.1 - Verbuden mit:" + I.Address + " Ping :" + I.RoundtripTime;
}
catch (Exception)
{
Console.Title = "Chat 1.1 - Nicht Verbunden";
}
}
}
}
public static void DiVB() //Starter des EngabeFormorlars zur Verbindungherstellung
{
F13 = new Form2();
Application.EnableVisualStyles();
try { Application.SetCompatibleTextRenderingDefault(fals e); }
catch (Exception) { }
Application.Run(F13);
}
static void EM()//Starter des SendeFormorlars
{
while (Program.Aus)
{
if (B3)
{
F12 = new Form1();
try
{
KontrolKern.F12.Location = new Point(CPo.CFP()[0], CPo.CFP()[1] + 345);
}
catch (Exception)
{
KontrolKern.F12.StartPosition = FormStartPosition.WindowsDefaultLocation;
}
Application.EnableVisualStyles();
try { Application.SetCompatibleTextRenderingDefault(fals e); }catch (Exception) { }
Application.Run(KontrolKern.F12);
}
Thread.Sleep(200);
}
}
public static int Hi;
public class CPo //Fenster Positions Ermitler
{
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hwnd, ref RECT rectangle);
static public int[] CFP()
{
int[] A27 = new int[2];
var cmd = Process.GetProcessesByName("ConsoleApplication1").First();
if (cmd != null)
{
var cmdRectangle = new RECT();
if (GetWindowRect(cmd.MainWindowHandle, ref cmdRectangle))
{
A27[0] = cmdRectangle.Left;
A27[1] = cmdRectangle.Top;
}
}
return A27;
}
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
}
}
Ist das der teil der die Störung hervorruft ?
Wen ja was muss ich ändern ?
Danke
Grüne Gurken
03.04.2014, 20:38
danke für die Rückmeldung, das Programm besteht aus 3 Programme die gleichzeitig laufen.
1.versendet Nachrichten.
2 . wartet auf eingehende Nachrichten.
3. Prüft ob die Verbindung noch vorhanden ist und wie der Ping so steht .
1 ist das Haupt Programm.
2 und 3 sind Threads.
3 wird gleich am Anfang gestartet und ist eine endlos schleife.
3 ist auch der Thread der die 2 startet wenn die Verbindung da ist.
Programm 3/Thread 2:
class KontrolKern
{
public static ASCIIEncoding S1 = new ASCIIEncoding();
public static Socket V1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Verbindung
public static Form1 F12 = new Form1();//Formular zur Nachrichten Sendung
public static bool B10,B3;//B10 - N Formular Kontrolle | B3 - Verbindungskontrolle
public static Thread Tr1 = new Thread(new ThreadStart(EM)); // Start des separatem Programms mit dem Eingabe Formular
public static Form2 F13 = new Form2();//Eingabeformulars zur Verbindungseinstellung
public static void Satart() //Überwachungsprogramm einzelner Funktionen /Also der der der Eintrittspunkt
{ while (Program.Aus)
{
if(V1.Connected)
{
B3 = true;
}
else
{
B3 = false;
}
if (!B3)
{
Console.Title = "Chat 1.1 - Nicht Verbunden";
try
{
F12.Close();
F12 = null;
}
catch (Exception)
{
}
}
else
{
byte[] P2 = new byte[35];
bool jo = false;
try
{
char[] ip = Convert.ToString(V1.LocalEndPoint).ToCharArray();
Ping P1 = new Ping();
string IP2 = "";
for (int i = ip.Length - 1; i >= 0; i--)
{
if (jo)
{
IP2 = ip[i] + IP2;
}
else
{
if (ip[i] == ':')
{
jo = true;
}
}
}
PingReply I = P1.Send(IP2, 100, P2);
Console.Title = "Chat 1.1 - Verbuden mit:" + I.Address + " Ping :" + I.RoundtripTime;
}
catch (Exception)
{
Console.Title = "Chat 1.1 - Nicht Verbunden";
}
}
}
}
public static void DiVB() //Starter des EngabeFormorlars zur Verbindungherstellung
{
F13 = new Form2();
Application.EnableVisualStyles();
try { Application.SetCompatibleTextRenderingDefault(fals e); }
catch (Exception) { }
Application.Run(F13);
}
static void EM()//Starter des SendeFormorlars
{
while (Program.Aus)
{
if (B3)
{
F12 = new Form1();
try
{
KontrolKern.F12.Location = new Point(CPo.CFP()[0], CPo.CFP()[1] + 345);
}
catch (Exception)
{
KontrolKern.F12.StartPosition = FormStartPosition.WindowsDefaultLocation;
}
Application.EnableVisualStyles();
try { Application.SetCompatibleTextRenderingDefault(fals e); }catch (Exception) { }
Application.Run(KontrolKern.F12);
}
Thread.Sleep(200);
}
}
public static int Hi;
public class CPo //Fenster Positions Ermitler
{
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hwnd, ref RECT rectangle);
static public int[] CFP()
{
int[] A27 = new int[2];
var cmd = Process.GetProcessesByName("ConsoleApplication1").First();
if (cmd != null)
{
var cmdRectangle = new RECT();
if (GetWindowRect(cmd.MainWindowHandle, ref cmdRectangle))
{
A27[0] = cmdRectangle.Left;
A27[1] = cmdRectangle.Top;
}
}
return A27;
}
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
}
}
Ist das der teil der die Störung hervorruft ?
Wen ja was muss ich ändern ?
Danke
Darf ich das auf http://www.reddit.com/r/badcode/ stellen?
MsGarry's Mod
03.04.2014, 20:40
Ja darfst du :D
Aber Achtung der Thread 1 /Programm 2 wird nicht direct gestartet sondern indirekt über über das Haupt Programm, das musste sein sonst hätte er sich beschwert.
Nicht böse gemeint, aber... ALTER?
Als erstes lernt man doch immer den Variablen "sinnige" namen zu geben oder?
public static ASCIIEncoding S1
public static Socket V1
public static Form1 F12
public static bool B10,B3;
public static Thread Tr1
public static Form2 F13
Da ist klar, das man da nicht drauf klar kommt.
Aber jetzt mal richtig:
So wie ich das sehe, versuchst du einen Ping auszuführen...
Ping P1 = new Ping();
PingReply I = P1.Send(IP2, 100, P2);
Da ich soetwas noch nicht gemacht habe, und damit die Funktionen nicht kenne, kann ich nur das fragen:
Wo kommt P2 her?
Warum heist die PingReply Funktion I?
Deine Threads (Tr1 !?) starten sich nicht selbst. Du hast sie bis jetzt nur global initialisiert...
Tr1.Start() dürfte die Lösung sein.
Mehr kann ich von der Zeit her nicht suchen und möcte ich auch wegen den Variablen Namen nicht...
Mir kommt es so vor, als wäre das entweder Schandcode (du probierst nur rum und es soll sowieso nie genutzt werden) oder du beherschst die Thematik noch nicht gut genug.
Wenn das der Fall ist, ist der Code ok, ansonsten würde ich darüber nachdenken noch mal neu anzufangen und genau zu überlegen, was wo hin gehört und UNBEDINGT ORDENTLICHE VARIABLENNAMEN NEHMEN :evil:
Das soll aber auf keinen Fall abwertend rüber kommen! Jeder der Programmiert macht mal soetwas.
Gruß
MsGarry's Mod
04.04.2014, 19:23
Hi, ich danke für die Rückmeldung, selbstverständlich ist das ein Teil meiner Schöpfung naja er ist nicht ansatzweise fertig aber es kann schon was schönes, und das mit den Variablen das ist mein stiel und damit komm ich gut klar.
Also hier der Rest:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.Drawing;
namespace ConsoleApplication1
{
class Program
{
static public bool Aus; //Variabel für das beenden Des Programms
private static Thread S1 = new Thread(new ThreadStart(KontrolKern.Satart));// Start des Seperatem Programms der Fungtionen Kontrolle
static void Main(string[] args)
{
S1.Start();//1 Start
Aus=true;
string F1="";
while (true != KontrolKern.B3 && Aus)
{
Console.ResetColor();
Console.Clear();
Console.WriteLine("Wollen sie warten<1> oder direkt Verbinden?<2>");
F1 = Console.ReadLine();
Console.Clear();
if (F1=="1")
{
Console.WriteLine("Wartet");
TcpListener L1 = new TcpListener(IPAddress.Any,88);
L1.Start();
KontrolKern.V1 = L1.AcceptSocket();
L1.Stop();
Console.Clear();
Console.WriteLine();
Console.Write("Paswort:");
Console.ReadLine();
Console.Clear();
}
else
{
KontrolKern.DiVB();
}
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
Console.Clear();
if (!KontrolKern.B10)
{
KontrolKern.Tr1.Start();
}
while (KontrolKern.B3)
{
byte[] P1=new byte[15];
try
{
if (0 != KontrolKern.V1.Receive(P1))
{
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(KontrolKern.S1.GetString(P1).Tri m());
}
else
{
KontrolKern.V1.Disconnect(true);
}
}
catch (Exception)
{
}
}
}
}
public static byte[] AES(byte[] A1, String PW,bool verde)
{
byte[] A4 = new byte[A1.Length];
Stream A2 = new MemoryStream(A1, false);
if (verde)
{
SharpAESCrypt.SharpAESCrypt A3 = new SharpAESCrypt.SharpAESCrypt(PW, A2, SharpAESCrypt.OperationMode.Decrypt);
A3.Write(A4, 0, A1.Length);
}
else
{
SharpAESCrypt.SharpAESCrypt A3 = new SharpAESCrypt.SharpAESCrypt(PW, A2, SharpAESCrypt.OperationMode.Encrypt);
A3.Write(A4, 0, A1.Length);
}
return A4;
}
}
}
^Das hupt Programm
\/ Eingabe Formular
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ConsoleApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void E1(object sender, KeyEventArgs e)//Senden von der Nachicht pär EnterTaste
{
if (e.KeyCode==Keys.Enter)
{
KontrolKern.V1.Send(KontrolKern.S1.GetBytes(text.T ext));
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(">" + text.Text);
text.Text = "";
}
}
private void Prüf(object sender, EventArgs e)//Interwal Prüfung
{
if (!KontrolKern.V1.Connected)
{
this.Close();
Timer.Stop();
}
}
private void End(object sender, FormClosedEventArgs e)//Formula schliest
{
Timer.Stop();
if (KontrolKern.B3)
{
KontrolKern.V1.Disconnect(true);
}
KontrolKern.B10 = false;
}
private void Tren(object sender, EventArgs e)//Tren Taste
{
KontrolKern.V1.Disconnect(true);
KontrolKern.B3 = false;
KontrolKern.B10 = false;
}
private void Start(object sender, EventArgs e) //Formorlar Startet
{
KontrolKern.B10 = true;
Timer.Start();
}
}
}
Ich hoffe das reicht ,danke.
Das sieht doch schon mal besser aus ;D
An deiner Stelle würde ich eine extra Funktion schreiben, die das Programm beendet.
Damit kannst du alle Timer und Threads schließen, die du für die Eingabe verwendest!
Oder zumindest in der Eingabe in der Prüf-Funktion Timer.Stop() vor this.Close() callen...
Das könnte mem leaks hervorrufen.
Gruß
PS: Ich bastel auch nebenbei einen Chat in C#... leider finde ich keine GPG/OpenPGP libs denen man vertrauen kann...
MsGarry's Mod
04.04.2014, 20:50
Wieso OpenPGP ,was hast du vor?
Einen verschlüsselten p2p Chat
Alles was der Chat braucht ist fertig. Es fehlt noch der holepunch und openpgp...
Aber sobald ich mich in das wrapen von c klassen eingelesen habe kommt das :D
Da du den Code so gekonnt wie deine deutsche Rechtschreibung einhackst, wundert mich keinesfalls, dass hier nichts geht.
Wenn ich ein Compiler wäre, würde ich dir schon für eine Zeile wie
private void Prüf(object sender, EventArgs e)//Interwal Prüfung
wegen dem Kommentar, aber vor allem wegen des Funktionsnamens gerne einen Bluescreen geben.
Außerdem sollte man immer Funktionen mit klar beschreibenden Namen angeben. Eine Funktion die
private void Tren(object sender, EventArgs e)//Tren Taste würde ich nicht kapieren. "Tren" ist Spanisch und heißt "Zug".
Eigne dir erstmal an, wie man syntaktisch Code lesbar gestaltet. Dann können wir bei semantischen Fragen weiterhelfen.
MsGarry's Mod
09.04.2014, 19:28
Es war nie vorgesehen den Code zu veröffentlichen.
Und ich komme klar mit der der Namensgebung ,sonst wüsste ich nicht wie ich die Variablen nennen sollte.
Wen Sie meinen das sie schlecht benannt oder bezeichnet worden sind, könnten sie mir bitte bei der Korrektur helfen, denn wen ich besser werde in der Namensgebung, dann kann ich auch in der Zukunft bessere Codes abliefern, danke.
Ich habe das Problem mit dem Pc behoben. Das Programm läuft prima im Nicht- Debugger- Modus ,nur der Debugger- Modus funktioniert nicht. Warum auch immer ,da funktioniert es leider nur manchmal.
Bei der Deklaration von Variablen, sollte man ihnen einen Namen geben, der aufzeigt
was sie sind ( lSocket (ListenSocket), dSocket (DataSocket/BoundedSocket) ),
was sie beinhalen ( Players, Clients, lastConnectionTime, Threads ( t/threadDataSocketListener )
wofür sie sind ( stopByte, errorCounter )
...
Wenn du unbedingt angeben willst, von welchem Typ sie sind ( angebracht für riesige Projekte und nur wenn du dir selbst merken kannst, welche Variable welchen Typ hat ) kann man
den Typ davor setzen: b_VarName / bVarName
den Typ dahinter setzen: VarName_b (ist eigenartig, kenne keinen der das so macht, ist aber praktisch für IntelliSense, da man sich den Typ nicht merken muss...
bei eigenen Classen kann man auch
ClassName_VarName oder
ClassNameVarName nutzen.
Das ist ganz grob zusammengeschustert, wie man Variablen benennen kann.
Den Sinn einer Variable musst du selber kennen und dementsprechend in die Namensgebung einfließen lassen.
Gruß
PS: Das ist ein Beispiel und muss nicht von dir oder deinen Freunden oder dem Enkel deiner Schwiegemutters Schwiegermutter so benutzt werden. Es soll nur als Beispiel und Anreiz dienen.
Powered by vBulletin® Version 4.2.2 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.