U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Code-editor : C sharp-code rechtstreeks uitvoeren

0000001976     -      08-05-2013

In de code-editor C# is het mogelijk om een assembly rechtstreeks uit te voeren:

  • hetzij omdat het gaat om een EXE;
  • hetzij omdat het gaat om een DLL die de interface MercatorUi.Interfaces.IExec implementeert.

Via de knop "Uitvoeren" kan deze C#-code dan meteen worden uitgevoerd.

Uitvoering van een EXE

De C#-code-editor genereert een EXE als de volgende compilatieopties aanwezig zijn:

  • target:winexe
  • main: espace de nom . nom de classe

en de code een statische methode Main() implementeert.

Merk op dat wanneer u voor het eerst een code tracht uit te voeren die niet over deze kenmerken beschikt, Mercator voorstelt om ze automatisch toe te voegen.

Hierna volgt een voorbeeld van een minimale C#-code voor een uitvoeringsprogramma:

Zoom
/*<CompilerOptions>
     /target:winexe
     /main:MyNameSpace.Class1
</CompilerOptions>*/

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;

namespace MyNameSpace
{
     public class Class1
    {

         public static void Main()
        { 
            System.Windows.Forms.MessageBox.Show( "OK" );
        }

    }
}

Het nadeel van het uitvoeren van een EXE is dat dit zich voordoet in een geheugenruimte die losstaat van Mercator. Bijgevolg is het niet mogelijk om globale variabelen van Mercator rechtstreeks te delen en interactief te werken met objecten van Mercator. Bijgevolg zijn heel wat MercatorUi- en MercatorTunnel-klassen gewoon niet bruikbaar in deze methode, omdat ze niet correct geïnitialiseerd zijn. Daarom raden we de tweede methode aan (uitvoering van een DLL).

Uitvoering van een DLL

Het uitvoeren van een DLL biedt als groot voordeel dat dit gebeurt in hetzelfde AppDomain als Mercator, bijgevolg zijn alle openbare resources van Mercator (klassen, globale variabelen ...) volledig beschikbaar. Om ervoor te zorgen dat Mercator deze DLL kan uitvoeren, moet dit bestand gewoon de interface MercatorUi.Interfaces.IExec implementeren.

Merk op dat bij het openen van een nieuw C#-tabblad de noodzakelijke code al aanwezig is; u hoeft enkel de symbolen van de commentaren te verwijderen:

  • voor MercatorUi.Interfaces.IExec: //
  • rond het openbare blok void Main(): /* en */

De minimumcode ziet er dan als volgt uit:

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;

namespace MyNameSpace
{
     public class Class1 : MercatorUi.Interfaces. IExec
    {

         public void Main()
        {
            MercatorUi. Dialogs .Stop( "OK" );
        }

    }
}

U zult ook merken dat Mercator bij iedere uitvoering een assembly genereert waarvan de naam begint met de bestandsnaam gebruikt voor de opslag van het tabblad, gevolgd door de datum en het uur. Deze procedure is noodzakelijk om te verzekeren dat het .net-framework wel degelijk de laatste versie van uw assembly uitvoert, en geen eerder gecompileerde versie die nog in het geheugen zit. Mercator omvat geen procedure voor het automatisch schrappen van deze DLL's. U moet ze dus af en toe handmatig schrappen.