我正在使用java创建的桌面应用程序.我们正在为应用程序的Windows版本(用于在Windows OS上运行)工作.当我们运行我们的应用程序时,它会使用systemtray as在桌面上创建一个托盘图标
SystemTray tray = SystemTray.getSystemTray();
Run Code Online (Sandbox Code Playgroud)
我正在创建系统托盘的单个实例,我在应用程序的主类中创建.
我正在为我的应用程序创建exe.我的问题是当我运行我的应用程序的exe文件时,它每次都会创建托盘图标.
我想在我的应用程序中只在桌面上显示一个托盘图标并作为服务运行.只有在卸载应用程序时才会删除此图标.它应该在后台运行作为服务.
我没有任何方式可以帮助我将我的应用程序作为服务运行,并且应该只有一个实例在后台运行.
我想通过创建托盘图标作为服务来运行我的应用程序,并且应该存在单个实例.请指导我这个问题.
感谢您提前提出的所有宝贵建议.
我有一个应用程序需要是Windows PC上所有用户会话的单实例应用程序.到目前为止,我的研究主要集中在使用互斥体来实现这一目标,但我遇到了一个问题,我不确定这是一个真正的问题,我认为这是一个最佳实践问题.
首先是代码:
Private Const AppVer = "Global\UNIQUENAME" ' This is not what i am using but the name is unique
Public Sub Main()
Dim mutexValue As Long
mutexValue = CreateMutex(ByVal 0&, 1, AppVer)
If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
SaveTitle$ = App.Title
App.Title = "... duplicate instance."
MsgBox "A duplicate instance of this program exists."
CloseHandle mutexValue
Exit Sub
End If
' Else keep on truckin'
Run Code Online (Sandbox Code Playgroud)
现在,根据这篇文章,我相信我理解通过将NULL指针传递给CreateMutex函数,就像我上面一样,我基本上分配了与当前登录用户相关联的任何安全描述符.
如果这意味着我的想法(我可能需要更多指导)告诉我其他登录的用户将无法"看到"在原始用户会话下创建的互斥锁,也无法创建具有相同名称的互斥锁.
现在,经验证据似乎支持了这一点.我使用了一个消息框来弹出我收到的"LastDLLError",当另一个用户试图启动应用程序时(虽然它已经在另一个用户帐户下运行),我会收到一个ERROR_ACCESS_DENIED代码.我可以对此进行测试以及ERROR_ALREADY_EXISTS代码并且只是退出/或.然而,这感觉有点hackish,我想知道是否有人可以提出替代方案."正确"的做法似乎是将正确的指针传递给CreateMutex函数,这样任何用户都有权查看任何现有的互斥体(mutices?),但我不确定这是否可能没有当前登录用户是管理员(不易察觉).非常感谢任何协助/指导.提前致谢!
我想知道在Amazon S3中实现重复数据删除(单实例存储)文件存储的最佳方法.例如,如果我有3个相同的文件,我只想存储一次文件.有没有图书馆,API或程序来帮助实现这个?这个功能本身存在于S3中吗?也许是检查文件哈希等的东西.
我想知道人们用什么方法来实现这个目标.
我已经读过,DbContext对象应该被创建为InstancePerHttpRequest,而不是SingleInstance,因为它的线程不安全,并且它可能会在requets之间消耗过多的资源,从而导致了这种情况.但我使用的是使用DbContext实例的Repository对象.我应该使它们成为InstancePerHttpRequest还是使它们成为SingleInstance并使用DependencyResolver来获取当前的DbContext.
对于Autofac(或任何其他DI),基于DbContext,Repository和Service的Web应用程序,最佳对象创建设计是什么?
另一个问题是,为每个Web请求(例如请求中的10-15个)创建每个存储库或服务的不同DbContext对象有多昂贵?
model-view-controller asp.net-mvc single-instance autofac dbcontext
我的 WPF 程序使用SingleInstance.cs来确保只有一个实例正在运行,如果用户尝试通过双击它的快捷方式或其他机制来重新启动它。但是,在我的程序中存在需要重新启动的情况。这是我用来执行重启的代码:
App.Current.Exit += delegate( object s, ExitEventArgs args ) {
if ( !string.IsNullOrEmpty( App.ResourceAssembly.Location ) ) {
Process.Start( App.ResourceAssembly.Location );
}
};
// Shut down this application.
App.Current.Shutdown();
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都有效,但问题是它并不总是有效。我的猜测是,在某些系统上,第一个实例及其RemoteService创建的实例尚未终止,这会导致调用 to 启动的进程Process.Start( App.ResourceAssembly.Location );终止。
这是我的 app.xaml.cs 中的 Main 方法:
[STAThread]
public static void Main() {
bool isFirstInstance = false;
for ( int i = 1; i <= MAXTRIES; i++ ) {
try {
isFirstInstance = SingleInstance<App>.InitializeAsFirstInstance( Unique );
break;
} catch ( RemotingException …Run Code Online (Sandbox Code Playgroud) 我已经看到了有关使用 WPF 创建单实例应用程序的所有其他问题,并且我选择使用此处描述的 Microsoft 方法: https: //codereview.stackexchange.com/a/25667
这工作正常,但现在我想在这个应用程序上使用 Caliburn.Micro,而这段代码不能很好地与 caliburn 配合使用。
如何使用 caliburn micro 拥有单实例 wpf 应用程序?
要求非常简单:.net 4.5 并且每个用户会话只有一个应用程序实例
谢谢
我想从切换CreatMutex到boost::interprocess::named_mutex限制我的应用程序的单个实例.当应用程序运行并且结束时,两种方法都有效.但是,当应用程序崩溃并使用时,锁定不会被释放boost::interprocess::named_mutex.我可以通过使用两个name_mutex解决该问题,但我真的不明白这个问题.
为什么boost::interprocess::named_mutex在应用程序崩溃但未释放时锁定未释放CreatMutex?有什么不同?
boost::interprocess::named_mutex mutex(boost::interprocess::open_or_create, "my_mutex");
boost::interprocess::scoped_lock<boost::interprocess::named_mutex> lock(mutex, boost::interprocess::try_to_lock);
if(!lock) {
return 1; //exit
}
//application may crash here.
boost::interprocess::named_mutex::remove("my_mutex");
return 1; //exit
Run Code Online (Sandbox Code Playgroud) 我有一个控制台应用程序,我试图让它一次只运行一次。我使用了 boost 进程间库 shared_memory_object 来做到这一点。请参阅下面的代码片段,
boost::scoped_ptr<shared_memory_object> sharedMem;
try
{
sharedMem.reset(
new shared_memory_object(create_only, "shared_memory", read_write));
} catch(...)
{
// executable is already running
cerr << "Another instance of this program is running!" << endl;
return 1;
}
// do something
shared_memory_object::remove("shared_memory"); // remove the shared memory before exiting the application
Run Code Online (Sandbox Code Playgroud)
问题是,该方法阻止我的应用程序同时运行多次;但是,假设用户停止程序运行,那么内存不会被释放,下次当用户再次尝试运行该程序时,它不会运行。你有什么建议吗 ?
PS C++ 控制台应用程序,操作系统:Ubuntu(但也可以在其他平台上运行的解决方案将是完美的)。谢谢
我在AWS上使用Elastic Beanstalk创建了一个单实例Web应用程序.现在我想添加ssl证书以启用https访问.
我使用ACM创建了一个ssl证书,我正在接受这个!链接将其添加到我在Elastic Beanstalk中的Web应用程序.
但我找不到任何地方.
我怎么能找到他们?
ssl https single-instance amazon-web-services amazon-elastic-beanstalk
我刚刚实现了这段代码,该代码保护应用程序的单个实例,以免应用程序运行两次。
现在我想知道如何显示已经在运行的原始应用程序进程。
这是我在程序类中的代码:
static class Program
{
[STAThread]
static void Main()
{
const string appName = "MyappName";
bool createdNew;
mutex = new Mutex(true, appName, out createdNew);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form form = new Form1();
if (!createdNew)
{
form.Show(); <<=========================== NOT WORKING
form.Visible = true; <<===================== None
form.TopMost = true; <<===================== of
form.BringToFront(); <<===================== these working!
form.WindowState = FormWindowState.Maximized;
return;
}
Application.Run(form);
} private static Mutex mutex = null;
}
Run Code Online (Sandbox Code Playgroud)