Предотвратить открытие моего приложения дважды

Я работаю над проектом, который состоит из имени входа и страницы, где он «показывает» переменные сеанса (так как они скрыты от пользователя).

Чего я хочу добиться, так это того, что вкладка Mostrar.aspx активна, и у меня будет новая вкладка с тем же именем, которая выдаст мне сообщение о том, что вкладка уже активна.

прикрепленный пример кода:

Login.aspx:

 protected void ButtonLogin_Click(object sender, EventArgs e)
 {
        string s= System.Configuration.ConfigurationManager.ConnectionStrings["AppComintecConnectionString"].ConnectionString;
        SqlConnection conexion = new SqlConnection(s);

        conexion.Open();
        string query = "SELECT * FROM Usuarios where usuario = @username and contrasena = @password";
        SqlCommand cm = new SqlCommand(query, conexion);
        cm.Parameters.AddWithValue("@username", TextBox1.Text);
        cm.Parameters.AddWithValue("@password", TextBox2.Text);


        //Si existe un usuario con los datos retorna true, caso contrario false
        var reader = cm.ExecuteReader();

        if (reader.Read())
        {
            //Si existe, Bienvenido...

            Session["nombre"] = reader["nombre"].ToString();
            Session["id_usr"] = reader["id_usr"].ToString();
            Session["area"] = reader["area"].ToString();
            Session["tipo"] = reader["tipo"].ToString();
            Session["permiso"] = reader["permiso"].ToString();
            Session["mail"] = reader["mail"].ToString();
            Session["puesto"] = reader["puesto"].ToString();
            Session["sede"] = reader["sede"].ToString();
            Response.Redirect("Mostrar.aspx");
        }
        else
        {
            LabelError.Visible = true;
            LabelError.Text = "usuario o contraseña invalido !!";
            LabelError.Attributes.Add("class", "alert alert-danger");
        }

        conexion.Close();
    }

Show.aspx

protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["nombre"] == null || Session["id_usr"] == null || Session["area"] == null || Session["tipo"] == null || Session["permiso"] == null || Session["mail"] == null || Session["puesto"] == null || Session["sede"] == null)
        {
            Response.Redirect("Login.aspx");
        }
        else
        {
            resultado1Label.Text = Convert.ToString(Session["nombre"]);
            resultado2Label.Text = Convert.ToString(Session["id_usr"]);
            resultado3Label.Text = Convert.ToString(Session["area"]);
            resultado4Label.Text = Convert.ToString(Session["tipo"]);
            resultado5Label.Text = Convert.ToString(Session["permiso"]);
            resultado6Label.Text = Convert.ToString(Session["mail"]);
            resultado7Label.Text = Convert.ToString(Session["puesto"]);
            resultado8Label.Text = Convert.ToString(Session["sede"]);

            LabelAcept.Text = "Claramente estan cargadas las variables de sesion";
            LabelAcept.Attributes.Add("class", "alert alert-success");
        }
    }

Может ли кто-нибудь немного помочь мне по этому вопросу?

0
задан 29.11.2019, 21:48
1 ответ

В твоем program. Cs podrГ-схвати использовать:

private static void Main()
        {
            System.Threading.Mutex mutex = new System.Threading.Mutex(false, "MyUniqueMutexName");
            try
            {
                if (mutex.WaitOne(0, false))
                {
                    // Run the application
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new FrmNombreX());  //En nombre X va el nombre de tu Frm Principal o la vista que estes mostrando en tu cargada. 
                }
                else
                {
                    MessageBox.Show("Ya me estoy ejecutando!"); //El Sms que tu le quieras colocar
                }
            }
            finally
            {
                if (mutex != null)
                {
                    mutex.Close();
                    mutex = null;
                }
            }
        }

Предыдущий cГіdigo проверяет, чем между заданиями, который estГ©n прокручивая изображение в окне, не выполняет уже твою программу.

0
ответ дан 01.12.2019, 10:35