草庐IT

C++异常安全

全部标签

c# - 在单元测试中确定线程安全

我正在编写一个多线程应用程序,我也在尝试找出如何为其编写合适的单元测试。我认为这可能是关于如何最好地做到这一点的另一个问题。还有一个问题,我有一个像下面这样的类,知道它不是线程安全的,想在单元测试中证明它,但不知道如何去做:publicclassMyClass{privateListMyList=newList();publicvoidAdd(stringData){MyList.Add(Data);//Thisisnotthreadsafe!!}} 最佳答案 证明某些东西是线程安全的是棘手的——可能很难停止问题。您可以证明竞争条件

c# - .NET DateTime 线程安全吗

.NETDateTime线程安全吗?如果read操作返回不正确的值,我并不担心,我唯一担心的是:如果不同步,DateTime对象是否会损坏。 最佳答案 读取和写入DateTime字段不是原子的(至少在32位系统上)。如果您同时从多个线程分配同一个属性,您可能会破坏它。如果您从一个线程读取并从另一个线程写入,读取线程可能会获得损坏的值。从多个线程读取而同时没有写入线程是安全的。本质上,当同时从多个线程使用时,DateTime的两个32位半部分可能包含不同年龄的值。您可以混合使用两种写入方式。一个写的高32位部分,另一个写的低32位部分

c# - 奇怪的系统.__佳能异常(exception)

我有一个使用单例类的Windows服务ThreadQueue.当服务启动时,它会调用ThreadQueue.Start()然后,此类接受任务并将其排队,将并发性限制为可配置的线程数。ThreadQueue.Start()在服务启动时被调用一次。有时,服务运行几个小时后,我会收到以下异常:Application:myservice.exeFrameworkVersion:v4.0.30319Description:Theprocesswasterminatedduetoanunhandledexception.ExceptionInfo:System.NullReferenceExcep

c# - 什么应该是最好的异常处理策略

我正在开发用户从UI调用方法的应用程序,在此我从调用另一个方法的业务类调用方法UI-->方法1-->方法2-->方法3如果任何方法发生异常,我想向用户显示错误消息。我是否应该直接将异常抛出给调用方方法,然后在UI层捕获异常并显示消息。除了抛出异常并在调用者处捕获外,还有更好的处理方法吗?我不想使用返回整数作为结果的C++约定。 最佳答案 如果你不能在发生异常的方法中从异常中恢复,不要试图捕获它(除非你想记录它,在这种情况下在记录后再次抛出它).然后在UI级别捕获。尝试在每个级别捕获异常只会让您的代码变得臃肿。

c# - 获取和设置简单的静态属性线程安全吗?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:AreC#auto-implementedstaticpropertiesthread-safe?在下面的示例类中staticclassShared{publicstaticstring[]Values{get;set;}}许多读取器线程定期读取Values字符串数组,而有时单个写入器会使用setter将整个数组替换为新值。我需要使用ReaderWriterLock还是C#会自动处理?编辑:在我的例子中,唯一需要的“线程安全”是:当读者正在搜索一个值时,当作者替换数组时,不会发生任何不好的事情。我不在乎读者是

c# - BitmapFrame.Create 异常(WPF 框架中的错误?)

我实现了一个C#应用程序,它以30fps的帧速率接收帧RGB。帧到达事件是用这段代码管理的:voidclient_ColorFrameReady(objectsender,ColorFrameReadyEventArgse){mycounter++;Console.WriteLine("newframereceived:"+mycounter);if(writer!=null){count++;if(count%2==0){using(varframe=BitmapImage2Bitmap(e.ColorFrame.BitmapImage))using(varthumb=ResizeB

c# - 发生异常后向后单步执行程序 - Visual Studio

有没有办法从发生错误/异常的地方退回程序?还是看错误发生前调用方法的顺序? 最佳答案 在VisualStudio2010的终极版本中,您可以使用Inellitrace返回执行,正如DanPuzey提到的那样。但是,在任何版本的VisualStudio中,您仍然可以仅从调用堆栈中获取大量信息。它不仅显示导致当前位置的调用,通过双击“调用堆栈”窗口中的点,您还可以跳转到调用每个方法的代码中的点。堆栈的状态得以保留,因此您甚至可以在调用方法中看到局部变量的值。 关于c#-发生异常后向后单步执行

c# - 抛出正确类型的异常

在我的代码中,我经常遇到这样的情况:publicvoidMyMethod(stringdata){AnotherClassobjectOfAnotherClass=GetObject(data);if(objectOfAnotherClass==null)thrownewWhatExceptionType1("objectOfAnotherClassisnull.");if(objectOfAnotherClass.SomeProperty假设GetObject使用了一些不受我控制的外部库,如果没有data的对象,这个库返回null存在并将负SomeProperty视为有效状态,因此不

c# - w3wp.exe 中出现未处理的 win32 异常

我在尝试加载ASP.NETMVC网站时遇到以下异常:Unhandledexceptionat0x07070a91inw3wp.exe:0xC0000005:Accessviolationreadinglocation0x00000000.VisualStudio即时调试器打开,我在调试器中看到的唯一信息是:Callstacklocation:msvbvm60.dll!06c00a91()该网站使用了一些COM对象,在上周之前一切正常。这个问题突然出现。这是来自Windows事件查看器的错误日志:Faultingapplicationname:w3wp.exe,version:7.5.7

c# - 我如何吞下所有异常并保护我的应用程序免于崩溃?

我发现了几个C#应用程序崩溃以响应错误条件,例如obj=null或obj.member=null。很多时候,obj来自3rdPartyApp的界面。并导致3rdPartyApp和MyCsApp一起崩溃。我如何在所有可能的区域添加异常处理,以便我的应用程序能够在这些灾难性情况下生存?将try-catch添加到所有位置并从情况中恢复是一个挑战。我怎样才能以现实、可靠和防弹的方式实现这一目标?[更新:工业自动化控制]结构:GUI(asp.net,c++)-RuntimeApp(C++)-MyCsApp(cs)-3rdPartyApp(Cs)正常程序:HostApp--(通过以太网Cabele