我有一个终结器似乎总是在应用程序关闭期间失败.我认为这是因为它持有一些在那时不再有效的本地资源.有没有办法在析构函数/终结器中告诉它是否因应用程序关闭而被调用?
谢谢!
是否有C++功能可以关闭电脑?既然我怀疑有一个(至少在标准库中),我可以用C++调用什么是windows函数?
基本上,在c ++中关闭windows xp计算机的代码是什么?
某个应用程序使用了一个类库.它包含一个外部使用的A类,以及库中另一个私有类B的静态字段.用户应用程序使用库中的A类实例.
当应用程序关闭时,我想在B类中执行一些清理.是否有可能在没有用户应用程序的任何操作的情况下在B类中捕获应用程序关闭事件?
class B
{
public B()
{
// attach Handler() to applicaiton shutdown event
}
void Handler()
{
// do some work
}
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个理论上可以在不同环境中使用的Java客户端:Java main(),servlet容器或依赖注入.
客户端实现内部连接线程池.
这种方法的问题在于,客户端的用户不知道实现内部线程池的事实将使他或她的应用程序在关闭时"挂起".我的用户需要知道向库发送shutdown()消息.
我想知道是否可以采取任何其他替代方法,一方面,允许我为我的连接启动一个线程池; 而且,另一方面,捕获一些事件,可能是一个JVM事件,表明JVM正在关闭,这将允许我调用我的shutdown()实现.
我创建了一个运行多个后台线程的表单.我添加了另一个处理异常和错误的类(如果有的话).当代码运行时,如果发生应该强制应用程序关闭的错误,我可以使用Application.Exit()吗?这会杀死后台线程吗?
public class Main {
public static void main(String[] args) throws InterruptedException {
ClassA a = new ClassA();
a = null;
//Runtime.getRuntime().gc();
Thread.sleep(4000);
}
}
public class ClassA {
@Override
public void finalize(){
System.out.println("cleaned");
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,finalize()永远不会执行.控制台上没有任何内容.从gc()中删除注释时,执行finalize(),并将"已清除"打印到控制台.为什么我必须明确地调用垃圾收集器?
我需要在NSUserDefaults中保存NSMutableDictionary.我在网上搜索了很多例子,但没有收到任何足够相关的例子.有人可以发布一小段代码,它会在关机时在NSUserDefaults中保存NSMutableDictionary,并在应用程序启动时检索它吗?还能告诉我在哪里放置代码.
我自己有一些代码,但它不起作用.
appDelegate.h - 检索数据
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *dat = [defaults objectForKey:@"theKey"];
tmpArray = [[NSMutableArray alloc] init];
tmpArray = [NSKeyedUnarchiver unarchiveObjectWithData:dat];
[self.window makeKeyAndVisible];
[window addSubview:tabBarController.view];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
appDelegate.h - 存储数据
- (void)applicationWillTerminate:(UIApplication *)application {
[self saveContext];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *dat = [NSKeyedArchiver archivedDataWithRootObject:tmpArray];
[defaults setObject:dat forKey:@"theKey"];
}
Run Code Online (Sandbox Code Playgroud)
是的,它是一个数组,但我需要一个NSMutableDictionary.
iphone application-shutdown nsuserdefaults nsmutabledictionary data-persistence
只要我在代码中使用setOnClickListener作为按钮,当我启动应用程序时就会说 the application has stopped unexpectedly
package example.khumbayatabbed;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class Category extends ListActivity{
int categ=0;
String[] categories = new String[100];
Button button1;
EditText edittext1;
ArrayList<HashMap<String, String>> …Run Code Online (Sandbox Code Playgroud) 如果用户尝试关闭应用程序,我想显示一个“关闭查询”确认对话框。如果系统关闭或任务管理器中的任务或进程正在结束,我只想清理并关闭。
我尝试了这段代码:
private
procedure WMEndSession(var Message: TWMEndSession); message WM_ENDSESSION;
Run Code Online (Sandbox Code Playgroud)
...
procedure TxxxForm.WMEndSession(var Message: TWMEndSession);
begin
gShuttingDown := Message.EndSession;
end;
Run Code Online (Sandbox Code Playgroud)
...
procedure TxxxForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Application.ProcessMessages;
if gShuttingDown then
CanClose := True
else
CanClose := MessageDlg('Are you sure you want to stop the close?', mtConfirmation,
[mbYes, mbNO], 0) = mrYes;
end;
Run Code Online (Sandbox Code Playgroud)
弹出确认显示我是从任务管理器中关闭程序还是终止进程。
c# ×3
c++ ×2
java ×2
windows ×2
.net ×1
android ×1
buttonclick ×1
delphi ×1
delphi-xe4 ×1
destructor ×1
events ×1
finalize ×1
finalizer ×1
iphone ×1
onclick ×1
shutdown ×1
subscription ×1
threadpool ×1
winapi ×1