标签: application-close

禁用Alt + F4,但允许通过代码关闭表单,CloseReason.UserClosing没有帮助

我希望表单不会通过执行Alt+ 关闭,F4但如果Application.Exit()this.Close从同一表单调用,则应该关闭它.

我试过CloseReason.UserClosing但仍然没有帮助.

.net c# application-close winforms

6
推荐指数
1
解决办法
2万
查看次数

Android:BackStack行为不端,如果应用程序是从另一个应用程序启动的

我有一个应用程序,以一个开头SplashScreenActivity.然后,显示a LoginActivity,或者如果用户已经登录,MainActivity则显示a.如果应用程序已在运行,SplashScreenActivity则会被解除以下内容

//SplashScreenActivity
 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Adding this check for following cases
    if (!isTaskRoot())
    {
        String intentAction = getIntent().getAction();
        if (getIntent().hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
            finish();
            return;
        }

        if(getIntent().getCategories().contains(GCMIntentService.INTENT_CATEGORY_GH_NOTIFICATION)){
            finish();
            return;
        }
    }
Run Code Online (Sandbox Code Playgroud)

出现问题

如果我从PlayStore等其他活动启动应用程序,它会在正确的活动中恢复,如果已经运行的话.这是Intent我用来在第二个应用程序中重现

//AnotherApplication.apk
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("my.package.name");
startActivity(launchIntent);
Run Code Online (Sandbox Code Playgroud)

但是,这个动作在某种程度上打破了Backstack.它不是在后台关闭应用程序MainActivity,而是重新启动应用程序.

//MainActivity.class
@Override
public void onBackPressed() {
    if (getNavDrawerMain().isDrawerOpen()) {
        getNavDrawerMain().closeDrawer();
    } else {
        closeApp();
    }
}

protected void closeApp() { …
Run Code Online (Sandbox Code Playgroud)

android application-close back-stack

6
推荐指数
1
解决办法
636
查看次数

优雅地关闭多线程应用程序?

我有一个有两个线程的应用程序.

第一个(主线程)使用套接字捕获数据并更新DataTables

第二个将DataTables插入数据库.

应用程序工作正常,但当它关闭时,主线程完成读取数据并在第二个线程中调用Abort方法,这可能是插入数据库,这会导致数据不一致.

目前我使用以下解决方案来克服"插入时中止"

编辑:在强大的答案后,我改变了代码

void MainThread()
{
     while(Read())
     {
        //Read Data through socket
        try
        {
           //Wait on Mutex1
           //Update Tables
        }
        finally
        {
          //Release Mutex1
        }
     }
   _isrunning = false;
   _secondThread.Join();
}
void SecondThread()
{
     while(_isrunning)
     {
        try
        {
           //Wait on Mutex1
           //Insert Tables into Database using transactions
        }
        finally
        {
           //Release Mutex1           
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

c# database multithreading application-close

5
推荐指数
2
解决办法
1388
查看次数

在 WinForms 应用程序中第二次未检测到任务管理器关闭

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
    {
        if (MessageBox.Show(this, "Do you really want to close?", "Close?", 
                            MessageBoxButtons.YesNo) == DialogResult.No)
        {
            e.Cancel = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我想关闭应用程序时,单击关闭按钮,消息框会按其应有的方式显示,然后我选择了“否”。然后执行 e.Cancel = true 行并且表单未关闭。

现在的问题是,在此之后,如果我从任务管理器关闭应用程序,关闭原因是 UserClosing !为什么?不应该是TaskManagerClosing吗?

c# taskmanager detect application-close winforms

5
推荐指数
1
解决办法
2382
查看次数

何时调用PostQuitMessage

像许多应用程序一样,我创建了多个窗口 我不知道也无法跟踪已经创建了多少个窗口,所以我不知道什么时候没有.

我的问题是,当所有窗口都关闭时,除非我PostQuitMessage以某种方式调用,应用程序一直运行,没有打开窗口(显然).我无法PostQuitMessage在消息处理程序中调用响应WM_DESTROY消息,因为当第一个窗口关闭时,它将关闭所有窗口,即使还有其他20个窗口仍然打开.

我的问题是如何知道何时调用PostQuitMessage(0)实际终止应用程序?

c c++ winapi application-close

3
推荐指数
1
解决办法
2909
查看次数

applicationWillTerminate未调用

我实现了applicationWillTerminate方法,但它从未被调用过

-(void)applicationWillTerminate:(NSNotification *)notification
{
    [[NSApplication sharedApplication] terminate:self];
    NSLog(@"EOP");
}
Run Code Online (Sandbox Code Playgroud)

如何在应用程序关闭之前执行一些代码?

谢谢

macos cocoa application-close

2
推荐指数
1
解决办法
3069
查看次数

java,声明一个在应用程序关闭之前运行的方法

我想在申请结束前做一些动作.

我看到有动作听众,但我没有框架或类似的东西.只是一个java文件.

我怎样才能设置某种控制?

java actionlistener application-close

2
推荐指数
1
解决办法
708
查看次数

C++ - 如何在应用程序退出时执行命令?

我是C++的新手,最近开始了一个项目,我需要访问一个设备,收集某些数据并将其转发到本地网络上的数据流.

虽然我的应用程序完成所有需要它缺乏功能:当我关闭窗口时,应用程序正在运行它不会停止硬件设备.结果是,每次我完成程序时都必须进行硬件复位.这不仅不方便,而且对于程序的预期用途是不可能的.

我基本上只想设置一个函数的回调函数,当程序关闭时执行该函数(通过单击x,按Alt-F4等)

这可能吗?我有可能为这样的事件创建一个处理程序:

BOOL WINAPI ConsoleHandler(DWORD dwCtrlEvent)
{
    switch (dwCtrlEvent)
    {
    case CTRL_CLOSE_EVENT:
        // something
    case CTRL_SHUTDOWN_EVENT:
        // the same?
    default:
        return FALSE;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这是一个正确的方法,我想知道如何使用这个处理程序?我是否需要在我的程序中创建这样的处理程序并且不断更新?

我很感激任何帮助乔纳斯

c++ winapi function-exit application-close eventhandler

2
推荐指数
1
解决办法
1175
查看次数

C#应用程序关闭问题

我想要我的应用程序,它会在单击关闭(X)按钮时最小化到系统托盘.

只有通过单击主应用程序窗口上的其他按钮/菜单或单击系统托盘上下文menuItem才能关闭它.

我可以在关闭时使窗口最小化到托盘.

但我面临的问题是,我现在无法关闭应用程序.

这是我的代码(它无法关闭应用程序):

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void hideToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Visible = false;
        }

        private void showToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Visible = true;
        }

        private void quitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.DoEvents();
            Application.Exit();
        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            if (FormWindowState.Minimized == this.WindowState)
            {
                notifyIcon1.Visible = true;
                notifyIcon1.ShowBalloonTip(500);
                this.Hide();
            }
            else if (FormWindowState.Normal == this.WindowState)
            {
                notifyIcon1.Visible = false;
            }
        }

        private void …
Run Code Online (Sandbox Code Playgroud)

c# application-close winforms

1
推荐指数
1
解决办法
1048
查看次数