Elegant IPB Skin By Skinbox

.NET Base: Mutex Problem - .NET Base

Zum Inhalt wechseln

Seite 1 von 1
  • Du kannst kein neues Thema erstellen
  • Antworten nicht möglich

Mutex Problem

Geschrieben 09. Mrz 2010 - 21:20 (#1) Mitglied ist offline   Razer 

  • Erfahrener Benutzer
  • PIPPIPPIPPIP
  • Blog anzeigen
  • Gruppe: Senior Mitglieder
  • Beiträge: 282
  • Registriert: 11. Sep. 09
  • OS: Windows 7
  • IDE: Visual Studio 2008

Hallo,
ich hab ein Problem mit den Mutex.

Anfangs wirkte es gar ned, inzwischen hab ichs geschafft, dass jede weitere Instanz sofort abkackt (keine Meldung).

Hier mein Code:
Visual C#
 	internal static Mutex mutexInstance = null;
 	private const string MutexID = "tkmap";
 	[STAThread]
 	internal static void Main()
 	{
 	
 	try
 	{
 	mutexInstance = Mutex.OpenExisting(MutexID);
 	messageBoxEx.Show(null, "Instanzproblem", "Nur eine Instanz erlaubt!",
 	"Es läuft bereits eine Instanz von TKMap!", MessageBoxButtons.OK,
 	MessageBoxIcon.Exclamation);
 	Environment.Exit(0);
 	}
 	catch
 	{
 	mutexInstance = new Mutex(true, MutexID);
 	}


und am Ende von Main:
Visual C#
 	mutexInstance.ReleaseMutex(); 	Application.Run(Loader);


Angeblich (laut mehreren Tutorials) sollte man es genau so machen. So stands in jedem Tutorial gleich da.

Aber mehr als ein "Funktioniert nicht mehr" kommt nicht. Nichtmal die "Only one Instance"-Meldung kommt...


Danke
R

Dieser Beitrag wurde von Razer bearbeitet: 09. Mrz 2010 - 21:22

Eingefügtes Bild
Game Development Studio
0

Geschrieben 09. Mrz 2010 - 22:11 (#2) Mitglied ist online   Maximilian 

  • capo dei capi
  • Blog anzeigen
  • Gruppe: Administratoren
  • Beiträge: 816
  • Registriert: 10. Sep. 09
  • Wohnort: Im dicken B oben an der Spree
  • OS: Windows 7 Ultimate (x64)
  • IDE: VS 2010 Premium

Hey,
ich mach das in meinen Anwendungen auch immer mit ner Mutex, aber etwas anders:

Visual C#
[STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            
            bool isNew = false;
            System.Threading.Mutex appMutex = new System.Threading.Mutex(
                true,
                "e65be7a5-9579-49af-a4f6-5dab130be5e1",
                out isNew);

            if (isNew)
            { 
                Application.Run(new Form1());
            }
            else
            {
                MessageBox.Show("Autschn!");
            }
            
        }


Funktioniert perfekt, wo genau der Fehler bei der Lösung liegt weiß ich nicht, kannst du evtl. mal ein Link zu einem Tutorial posten in welchem das so beschrieben steht?

Cheerio

Dieser Beitrag wurde von Maximilian bearbeitet: 09. Mrz 2010 - 22:11

Mit freundlichen Grüßen
Eingefügtes Bild
MaximilianKrauss.Net | updateSystem.NET

"Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why."


Unterstütze qualitative Beiträge durch ein Klick auf Eingefügtes Bild.
0

Geschrieben 10. Mrz 2010 - 15:37 (#3) Mitglied ist offline   Razer 

  • Erfahrener Benutzer
  • PIPPIPPIPPIP
  • Blog anzeigen
  • Gruppe: Senior Mitglieder
  • Beiträge: 282
  • Registriert: 11. Sep. 09
  • OS: Windows 7
  • IDE: Visual Studio 2008

Visual C#
 	private const string MutexID = "tkmap";
 	[STAThread]
 	internal static void Main()
 	{
 	Application.EnableVisualStyles();
 	Application.SetCompatibleTextRenderingDefault(false);

 	AppDomain currentDomain = AppDomain.CurrentDomain;
 	currentDomain.AssemblyResolve += new ResolveEventHandler(currentDomain_AssemblyResolve);

 	bool isRunning = false;
 	Mutex appMutex = new Mutex(true, MutexID, out isRunning);

 	if (isRunning)
 	{
 	messageBoxEx.Show(null, "Instanzproblem", "Nur eine Instanz erlaubt!",
 	"Es läuft bereits eine Instanz von TKMap!", MessageBoxButtons.OK,
 	MessageBoxIcon.Exclamation);
 	Environment.Exit(0);
 	}
 	else
 	{
 	[...]
 	}

Ergebnis: "TKMap funktioniert nicht mehr".

Was isn da los? Ist ja nicht normal ...


Zum Tutorial: Ich find den link leider nicht mehr... Aber jetzt wissen wir ja, dass es wohl nicht daran lag :-/

Edit
In VS kam nun wieder ein bekannter Fehler meinerseits: er wollte dass ich die "messageBoxEx.cs" angebe.
Wieso kommt das eigentlich? Der wird doch das erkennen dass die in der dotNet.dll drin steckt?!


MfG
R

Dieser Beitrag wurde von Razer bearbeitet: 10. Mrz 2010 - 15:55

Eingefügtes Bild
Game Development Studio
0

Geschrieben 10. Mrz 2010 - 16:49 (#4) Mitglied ist online   Maximilian 

  • capo dei capi
  • Blog anzeigen
  • Gruppe: Administratoren
  • Beiträge: 816
  • Registriert: 10. Sep. 09
  • Wohnort: Im dicken B oben an der Spree
  • OS: Windows 7 Ultimate (x64)
  • IDE: VS 2010 Premium

Ach dreck. Jetzt wo du es sagst ist es mir direkt aufgefallen. Du darfst beim Ersten Parameter der messageBoxEx nicht null schreiben. Für den TaskDialog wird ein gültiges Fensterhandle benötigt, welches aber erst beim laden deiner Form erstellt wird. Nimm am besten die normale MessageBox, dann sollte der Fehler verschwinden.

Cheerio

P.S.:
Er fragt deswegen nach der messageBoxEx.cs weil (aus Absicht) die Debuginformationen als *.pdb beiliegen, was bei Fehlern die Suche erleichtert, da dabei die Codedatei sowie die Zeilennummer angegeben wird.
Mit freundlichen Grüßen
Eingefügtes Bild
MaximilianKrauss.Net | updateSystem.NET

"Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why."


Unterstütze qualitative Beiträge durch ein Klick auf Eingefügtes Bild.
0

Geschrieben 10. Mrz 2010 - 17:12 (#5) Mitglied ist offline   Razer 

  • Erfahrener Benutzer
  • PIPPIPPIPPIP
  • Blog anzeigen
  • Gruppe: Senior Mitglieder
  • Beiträge: 282
  • Registriert: 11. Sep. 09
  • OS: Windows 7
  • IDE: Visual Studio 2008

Aha :)

Ja stimmt. Nun gehts.
Einwandfrei :)

Danke ;)
R
Eingefügtes Bild
Game Development Studio
0

Thema verteilen:


Seite 1 von 1
  • Du kannst kein neues Thema erstellen
  • Antworten nicht möglich


  • (3 Seiten)
  • +
  • 1
  • 2
  • 3
Trackbacks
Trackback URL Trackback Date Total Hits
.net mutex - Google-Suche vor 56 Minuten 1
Mutex .net - Google-Suche 21. Jul. 2010 20:35 1
AppDomain.CurrentDomain.AssemblyResolve geht nicht - Google-Suche 20. Jul. 2010 20:17 1
static mutex problem - Google-Suche 09. Jul. 2010 07:41 1
Not Available 07. Jul. 2010 10:19 1
Not Available 06. Jul. 2010 11:17 1
Google 06. Jul. 2010 08:14 4
  • (3 Seiten)
  • +
  • 1
  • 2
  • 3

Similar Topics
  Thema Themenstarter Statistik Letzter Beitrag
Keine neuen Antworten Problem mit Sendkeys mikeb69 
  • 0 Antworten
  • 118 Aufrufe
Keine neuen Antworten Problem mit Pluginsystem Razer 
  • 1 Antworten
  • 121 Aufrufe
Keine neuen Antworten Anhänge XML auslesen und in Listview hinzufügen Problem Jan 
  • 2 Antworten
  • 202 Aufrufe
Keine neuen Antworten RegEx Problem raupy 
  • 6 Antworten
  • 104 Aufrufe
Keine neuen Antworten Problem mit this.Width Progglord 
  • 4 Antworten
  • 104 Aufrufe

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0


Enter your sign in name and password


Sign in options
Mit OpenID anmelden   Or sign in with these services