草庐IT

释放信号

全部标签

c# - 如何在 WPF 中从图像源释放图像

正在加载如下图片XAML代码隐藏if(Path.GetFileNameWithoutExtension(filePath).ToLower().Contains(slugName.ToLower()+"_70x70")){imgThumbnail.BeginInit();imgThumbnail.Stretch=Stretch.UniformToFill;imgThumbnail.Source=newBitmapImage(newUri(filePath));imgThumbnail.EndInit();count=count+1;}上面的代码工作正常,现在我的缩略图旁边有一个删除按钮

c# - 我如何在 C# 中释放对象

谁能告诉我如何在C#中释放对象?比如我有一个对象:Objectobj1=newObject();//Somecodeusingobj1/*HereIwouldliketofreeobj1,afteritisnolongerrequiredandalsomoreimportantlyitsscopeisthefullruntimeoftheprogram.*/谢谢你的帮助 最佳答案 你不必。运行时的垃圾收集器会出现并为您清理它。这就是您首先使用C#而不是非托管C++的原因:) 关于c#-我

c# - 我是否需要在每次 'foreach' 迭代时释放 COM 对象?

这是(潜在的)问题:我创建了一个COM对象,然后使用“foreach”循环访问它返回的集合中的每个元素。我是否需要释放我在集合中迭代的每个单独元素?(请参阅下面的代码。)如果是这样,我想不出一种方法来有效地从“finally”语句中释放它,以防万一在操作该项目时出现错误。有什么建议吗?privatestaticvoiddoStuff(){ComObjectClassmanager=null;try{manager=newComObjectClass();foreach(ComObjectiteminmanager.GetCollectionOfItems()){Log.Debug(it

c# - 如何强行释放MemoryStream占用的内存?

我有以下代码:constintbufferSize=1024*1024;varbuffer=newbyte[bufferSize];for(inti=0;i我在32位机器上运行。第一次迭代完成得很好,然后在下一次迭代中,我在newMemoryStream.尽管有using语句,为什么之前的MemoryStream内存没有被回收?如何强制释放MemoryStream使用的内存? 最佳答案 我不认为问题是垃圾收集器没有完成它的工作。如果GC面临内存压力,它应该运行并回收您刚刚分配的400MB。这更有可能是因为GC没有找到连续的400MB

c# - 从静态对象中包含的 C# 字典中释放内存

我在使用WCFWeb服务时遇到了一些问题(一些转储、内存泄漏等),并且我运行了一个profillng工具(ANTS内存配置文件)。只是为了发现即使处理结束(我运行特定测试然后停止),第2代也有25%的内存用于Web服务。我追踪这段内存,发现我有一个充满(null,null)项目的字典对象,哈希码为-1。Web服务的工作流意味着在特定的处理过程中,项目被添加然后从字典中删除(只是简单的Add和Remove)。没什么大不了的。但似乎在删除所有项目后,字典中充满了(null,null)KeyValuePair秒。实际上有数千个,以至于它们占据了很大一部分内存并最终发生溢出,相应的强制应用程序

c# - 如何检查信号量的状态

我想检查Semaphore的状态,看看它是否发出信号(所以如果t发出信号,我可以释放它)。我怎样才能做到这一点?编辑1:我有两个线程,一个等待信号量,另一个应该释放一个信号量。问题是当第一个线程没有等待时,第二个线程可能会多次调用Release()。因此,第二个线程应该检测到它是否调用Release()是否会产生任何错误(如果您尝试释放一个信号量而没有人在等待它,它会产生一个错误)。我怎样才能做到这一点?我知道我可以使用旗帜来做到这一点,但它很难看。有没有更好的办法? 最佳答案 您可以通过调用WaitOne并将超时值0作为参数传递来

c# - 即使在 using block 中抛出异常,资源也会被释放吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:DoesDisposemethodstillgetcalledwhenExceptionisthrowninsideofUsingstatment?访问数据库时,我有很多usingblock。我想知道-如果必须在usingblock中抛出异常,即使未到达block的末尾,是否仍会处理必要的资源?或者我需要自己在catchblock中手动关闭它们吗?

c# - .NET 空闲内存使用(如何防止过度分配/释放内存给操作系统)

我目前正在开发一个网站,该网站大量使用缓存数据来避免往返。在启动时,我们得到一个“大”图(数百种不同类型的对象)。这些对象通过WCF检索并反序列化(我们使用ProtocolBuffer进行序列化)我正在使用redgate的内存分析器来调试内存问题(内存似乎不适合我们在完成初始化并最终得到这份报告后“需要多少内存”现在我们可以从这份报告中收集到的是:1).NET分配的大部分内存是空闲的(它可能在反序列化期间被正确分配,但现在它是空闲的,我希望它返回操作系统)2)内存碎片化(这很糟糕,因为每次我刷新现金时我都需要重做内存饥饿的反序列化过程,这反过来会创建大对象,由于碎片化可能会抛出OutO

c# - 信号量异常 - 将指定的计数添加到信号量会导致它超过其最大计数

我已经有一段时间没有遇到这个SemaphoreFullException了。总结..我在IIS7.5上使用ASP.NETv4.0框架应用程序池(集成)托管了一个应用程序。我正在使用Windows身份验证通过域(isinrole)对我的用户进行身份验证。我看过关于此主题的所有其他线程,其中建议设置Pooling=False。我不想那样做,因为性能优势,我想继续使用池化。我正在使用EntityFramework6来查询数据库,并且我没有在用户代码中的任何位置“处理”dbcontext。看起来问题出在DbConnectionPool代码中。错误在任何给定时刻随机发生。应用程序是否正在使用并不

c# - AutoResetEvent 和 maximumCount = 1 的信号量之间有什么区别吗?

我正在阅读以下文章:http://www.albahari.com/threading而且我无法意识到AutoResetEvent和用maximumCount=1初始化的信号量之间的区别。只是为了看看我是否做对了......这两种构造有什么区别吗?谢谢! 最佳答案 是的,肯定有区别。信号量用于限制对资源或代码块的访问。当WaitOne被调用时,线程将阻塞,直到信号量的计数可用。要进行计数,您可以调用Release。最大计数为1的信号量通常称为二进制信号量。这种性质的信号量只允许从单个线程访问资源或block代码。您可以使用二进制信号