Handling end process of a windows app

后端 未结 6 1816
無奈伤痛
無奈伤痛 2020-12-01 06:49

Is it possible to capture the task manager end process of a windows application within the same windows application itself? I am using a C# 2.0 win app and I would like to d

6条回答
  •  北荒
    北荒 (楼主)
    2020-12-01 07:45

    If you're targeting Windows Vista (or above) you might be interested in the RegisterApplicationRecoveryCallback API...

    http://msdn.microsoft.com/en-us/library/aa373345.aspx

    It allows you to specify a callback routine in your app that will be invoked when the process is about to crash. N.B. it is only for crashes, and won't automatically be called if the process is killed deliberately.

    You can p/invoke to this API from C# (I have done it), but bear in mind that when your callback is invoked your app is already in a very bad state, and you can make very few assumptions about the state of your memory. If you have any in-memory data that you want to use in this routine, I would put it in a static at a very general scope so that you have the best possible chance of it not having been "tidied up" when your callback routine runs.

    There are some other interesting APIs, related to this one, that allow you automatically restart your app after a failure, etc.

提交回复
热议问题