Solved

C# Detect for start application twice time (advanced)

Posted on 2009-07-02
4
890 Views
Last Modified: 2013-12-17
Hi experts!

  Im using C# 2008 , WinForm NET 2. I have application, which if is started with command parameters start different forms (and this form stay open all the time and can not be change).
I want to make sure that this application can not be started twice on 1 computer. This is simple, but not in this case. Because in fact application is count if is started twice with same parametyr. (possible option are only 3 and are static text like param1 or param2 or param3 How to do this ?

 In COM world I will ask and get for caption of application and will understand have or not have already started this application. But how I can do this via NET?

 I can save let say in registry this info, but if my application fail it will not save that is close and next time is possible to be unable to start J

 I need this  to keep from people error with started twice time my application.
0
Comment
Question by:dvplayltd
4 Comments
 
LVL 53

Accepted Solution

by:
Dhaest earned 500 total points
ID: 24770285
Ensuring that only a single instance of a .NET application is running
http://www.ai.uga.edu/~mc/SingleInstance.html

[STAThread]
    static void Main()                  // args are OK here, of course
    {
        bool ok;
        m = new System.Threading.Mutex(true, "YourNameHere", out ok);
 
        if (! ok)
        {
            MessageBox.Show("Another instance is already running.");
            return;
        }
 
        Application.Run(new Form1());   // or whatever was there
 
        GC.KeepAlive(m);                // important!
    }

Open in new window

0
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 24770350
0
 
LVL 9

Expert Comment

by:Rahul Goel ITIL
ID: 24770497
Hey this will help you.
http://en.csharp-online.net/Application_Architecture_in_Windows_Forms_2.0%E2%80%94Single-Instance_Detection_and_Management

you can use WindowsFormsApplicationBase class and check whether you appl has got different forms or not
0
 
LVL 2

Expert Comment

by:retorikci
ID: 24770924
in your Program.cs try this code.
in this example we avoid Login twice times.
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices; 
 
    //static class Program
    //{
    //    /// <summary>
    //    /// The main entry point for the application.
    //    /// </summary>
    //    [MTAThread]
    //    static void Main()
    //    {
    //        try
    //        {
    //            Application.Run(new frmLogin());
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox.Show(ex.ToString());
    //        }
    //    }
    //}
 
    static class Program
    {
        // need this for single instance detection 
        [DllImport("coredll.dll")]
        private static extern int FindWindow(string lpClassName, string lpWindowName);
        [DllImport("coredll.dll")]
        private static extern bool SetForegroundWindow(int hwnd);
 
        const string appName = "Login";
        const int ALREADY_EXISTS = 183;
        
        static void Main()
        {
            startTicks = Environment.TickCount;
 
            using (AppExecutionManager execMgr = new AppExecutionManager(appName))
            {
                if (execMgr.IsFirstInstance)
                    Application.Run(new frmLogin());
                else
                {
                    int hWnd = FindWindow(null, appName);
                    SetForegroundWindow(hWnd); 
                }
            }
        }
        internal static int startTicks;
    }

Open in new window

0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
SSL https .net web site force redirect 3 48
Where can I ask about my ASP.NET MVC project? 6 36
Alert on Server memory 2 22
Footer for each row on Gridview 2 21
Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question