Announcement

Collapse
No announcement yet.

Speicher Problem bei DllImport

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Speicher Problem bei DllImport

    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!

  • #2
    Auch hallo,

    das eigentliche Problem dürfte der "unmanaged code" in Form der importierten .dll sein, da die Speicherverwaltung von .NET nicht für externe Programme ausgerichtet ist. Siehe die Stichwörter "Garbage Collector" und "unsicherer Code" im Openbook
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Danke für die Information, dann werde ich mich da jetzt einmal einlesen.

      Comment

      Working...
      X