Visual Studio 系统.访问违例异常

dldeef67  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(149)

当我编译没有错误,但我有这个异常(System.AccessViolationException),即使这是一个非常简单的代码,我是新的c#,不能找到问题的URL是正确的,但它确实连接到我的服务器,我使用正确的包,但我不扫描标记的异常是在行:opcDaBrowseElement[]元素=浏览器.获取元素(项目ID);
例外情况:系统访问违规异常:'试图读取或写入受保护的内存。这通常表示其他内存已损坏。'

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TitaniumAS.Opc.Client.Common;
using TitaniumAS.Opc.Client.Da;
using TitaniumAS.Opc.Client.Da.Browsing;
using System.Threading;

namespace OPCDA
{
    class Program
    {
        static void Main(string[] args)
        {

            TitaniumAS.Opc.Client.Bootstrap.Initialize();

            Uri url = UrlBuilder.Build("Matrikon.OPC.Simulation.1");

            using (var server = new OpcDaServer(url))
            {
                server.Connect();
                var browser = new OpcDaBrowserAuto(server);
                BrowseChildren(browser);
            }

            
            void BrowseChildren(IOpcDaBrowser browser, string itemId = null, int indent = 0)
            {
                OpcDaBrowseElement[] elements = browser.GetElements(itemId);

                foreach (OpcDaBrowseElement element in elements)
                {
                    Console.Write(new string(' ', indent));
                    Console.WriteLine(element);

                    if (!element.HasChildren)
                        continue;

                    BrowseChildren(browser, element.ItemId, indent + 2);
                    

                }
            }
        }
    }
}
4bbkushb

4bbkushb1#

如果程序中发生System.AccessViolationException,进程将被终止,try catch无法捕获,有一种方法可以处理,在引发异常的方法中添加[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]属性,try catch可以捕获AccessViolationException异常而不会导致进程终止。

ffx8fchx

ffx8fchx2#

问题解决了,我所做的就是将构建参数更改为32位,而不是64位,它工作在Project\Build\CPU x86

相关问题