首先,我会谈谈我的要求。我用托盘中的通知器创建了我的项目。执行后,它在托盘中创建了许多实例,并逐渐减少为一个。所以我决定使用singleton来确保只创建一个实例。
我发现以下代码显示了如何创建一个Singleton,但我不知道如何在我的项目中实现它并只获取一个通知托盘实例?
private class test extends AsyncTask<Void, Void, Void> {
WeakReference<Activity> weakActivity;
public test(Activity activity) {
weakActivity = activity;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
//blah blah code!
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Activity activity = weakActivity.get();
if (activity != null) {
// Dismiss the progress dialog
//checkResult();
AlertDialog.Builder reorder = new AlertDialog.Builder(activity);
reorder.setMessage("test");
reorder.setCancelable(true);
reorder.setPositiveButton("ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog orderError = reorder.create();
orderError.show();
}
}
}
答案 0 :(得分:1)
您可以在入口点使用它
static readonly Mutex singleton = new Mutex(true, "AppName");
static void Main()
{
if (!singleton.WaitOne(TimeSpan.Zero, true))
{
MessageBox.Show("Another instance is running.");
return;
}
}