Hallo, ich hoffe, dass mir jemand bei diesem Problem helfen kann.
Um das Problem deutlicher zu zeigen habe ich hier einen kleinen Beispiel Code
mit 2 Klassen.
[highlight=c#]
public class Main
{
private static void Main(string[] args){
while(true){
int[] a = DllImport.PixelSearch(200,200,400,400, 0x7F2503,5,1);
if(a!=null){
break;
}
}
}
}
[/highlight]
[highlight=c#]
public class DllImport
{
public static int[] PixelSearch(int left, int top, int right, int bottom, int color, int shade, int step)
{
try{
int[] res =null;
AU3_PixelSearch(left, top, right, bottom, color, shade, step, res);
return res;
}
catch(Exception e){
return null;
}
}
[DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern void AU3_PixelSearch(int Left, int Top, int Right, int Bottom, int Col, int Var
, int Step, int[] PointResult);
}
[/highlight]
So, nun zu meinem Problem. Die Klasse DllImport soll mit nur als Hilfsklasse dienen und die Methoden aus der AutoItX3.dll umsetzten. Wenn ich jetzt den Code laufen lasse kommt nach einer Weile die Meldung, dass nicht mehr genügend Virtueller Speicher vorhanden ist und das Programm stürzt ab.
Im Task-Manager habe ich gesehen, dass die Speicherauslastung des Processes in kurzer Zeit sehr stark ansteigt.
Natürlich habe ich in meinem Programm keine Endlosschleife wie hier in dem Beispiel, aber dennoch wird meine Schleife sehr sehr oft durchlaufen.
Was kann ich dagegen tun, bzw an was liegt es?
Ich hoffe mir kann jemand helfen.
p.s.: Ich sollte noch erwähnen, dass ich noch Anfänger bin!
Um das Problem deutlicher zu zeigen habe ich hier einen kleinen Beispiel Code
mit 2 Klassen.
[highlight=c#]
public class Main
{
private static void Main(string[] args){
while(true){
int[] a = DllImport.PixelSearch(200,200,400,400, 0x7F2503,5,1);
if(a!=null){
break;
}
}
}
}
[/highlight]
[highlight=c#]
public class DllImport
{
public static int[] PixelSearch(int left, int top, int right, int bottom, int color, int shade, int step)
{
try{
int[] res =null;
AU3_PixelSearch(left, top, right, bottom, color, shade, step, res);
return res;
}
catch(Exception e){
return null;
}
}
[DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern void AU3_PixelSearch(int Left, int Top, int Right, int Bottom, int Col, int Var
, int Step, int[] PointResult);
}
[/highlight]
So, nun zu meinem Problem. Die Klasse DllImport soll mit nur als Hilfsklasse dienen und die Methoden aus der AutoItX3.dll umsetzten. Wenn ich jetzt den Code laufen lasse kommt nach einer Weile die Meldung, dass nicht mehr genügend Virtueller Speicher vorhanden ist und das Programm stürzt ab.
Im Task-Manager habe ich gesehen, dass die Speicherauslastung des Processes in kurzer Zeit sehr stark ansteigt.
Natürlich habe ich in meinem Programm keine Endlosschleife wie hier in dem Beispiel, aber dennoch wird meine Schleife sehr sehr oft durchlaufen.
Was kann ich dagegen tun, bzw an was liegt es?
Ich hoffe mir kann jemand helfen.
p.s.: Ich sollte noch erwähnen, dass ich noch Anfänger bin!
Comment