如何在通知程序项目c#中实现单例模式?

时间:2015-07-13 10:32:11

标签: c# singleton

首先,我会谈谈我的要求。我用托盘中的通知器创建了我的项目。执行后,它在托盘中创建了许多实例,并逐渐减少为一个。所以我决定使用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();
        }
    }

}

1 个答案:

答案 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;
                }
            }