我正在使用PostgreSQL数据库中的PL/pgSQL函数来解决死锁问题.请在代码块中找到SQL语句(只是示例):
BEGIN
UPDATE accounts SET balance = 0 WHERE acct_name like 'A%';
UPDATE accounts SET balance = balance + 100 WHERE acct_name like '%A';
EXCEPTION WHEN OTHERS THEN RAISE NOTICE SQLERRM;
END;
Run Code Online (Sandbox Code Playgroud)
我发现在这个语句运行期间发生了死锁.但我不确定是否有其他语句试图同时更新此表(因为我在我的日志记录系统中没有找到任何语句).
那么,这句话中是否可能出现死锁?据我所知,如果我们用BEGIN/ 阻止整个陈述END.将有相同的交易,不应自行锁定.
我是这个地方的新手,也是C#mobile的首发.现在,我正在研究C#手持设备平台.所以,我有一些问题要询问如何获取内存使用情况.我尝试了GC.GetTotalMemory()并获取GC使用的已分配内存.但是,我可以使用它来估计我的应用程序分配了多少内存.我想这可能不是实际的正确.然后我尝试谷歌搜索任何参考或类或任何用于检查Windows CE内存的东西,但我发现只在另一个平台不支持我正在做的事情.
先谢谢,Stoper
为此我道歉,我离开了这篇文章.
我非常感谢任何回答我的问题并留意这篇文章的人.
现在,通过在我的项目中实现"OpenNetCF"引用,我获得了所需的一切.
再次感谢 ;)
因为我尝试了许多方法来停止在.net紧凑框架3.5上运行的手持设备上的多实例问题.
目前,我通过创建"Mutex"获得解决方案,并检查是否有相同的进程正在运行.我把这个语句放在"Program.cs"中,它将在程序启动时第一次执行.
但我认为这不是我的问题,因为我得到了用户的请求,他们需要在运行时禁用"程序图标".
我理解用户的观点,他们有时可能会在短时间内"打开"该程序多次或多次.所以,如果它仍然能够"打开".这意味着程序需要自己初始化,最终可能会失败.是否可以绝对阻止多个实例?还是有其他方式没有编程,如在Windows CE上编辑注册表?
这是我的源代码:
bool firstInstance;
NamedMutex mutex = new NamedMutex(false, "MyApp.exe", out firstInstance);
if (!firstInstance)
{
//DialogResult dialogResult = MessageBox.Show("Process is already running...");
Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)
NamedMutex是OpenNetCF的类.
c# ×2
handheld ×2
.net ×1
.net-3.5 ×1
concurrency ×1
deadlock ×1
plpgsql ×1
postgresql ×1
windows ×1
windows-ce ×1