我花了很多时间来搜索答案,但我没有找到它。我们有用于自动打印任务的控制台应用程序(exe)和C1报告组件。此应用程序从cmd文件执行,cmd文件每隔一分钟由SQL Server 2014中的cmdexec调用。它的工作非常好,但除了GDI + Initialize - System.Drawing.SafeNativeMethods + Gdip.Initialize aproximetelly montly。没有机会解决这个问题,所以我们必须重新启动服务器。什么可能导致GDI +初始化异常
我试图用echo命令创建cmd文件。它工作得很好,我从echo获得输出。所以我只用Console.Writeline(“Hello world”)创建了应用程序。它工作得很好。然后我添加对System.Drawing的引用。没有任何事情发生 - 输出产生了。然后我创建了System.Drawing.Bitmap对象,并得到了GDI +初始化异常。
SQL服务器上的作业作为SQLRUNSERVICES运行,它位于Administrator组中。但是,当我以SQLRUNSERVICES的身份登录并在命令行中启动我们的应用程序时,应用程序可以正常工作。当我登录为另一个用户时,这没有问题。只有SQLRUNSERVICES通过SQL代理。
我想在Windows会话中一定有什么问题。此应用程序启动,打印一些报告并完成。所以我想当应用程序完成内存将是免费的,GDI对象将是免费的。我检查每个使用GDI的对象是否有调用处理方法。
我可以有机会看到会话使用的GDI对象吗?或者什么可能导致这种异常?我不能使用任务管理器,因为当应用程序没有运行时,没有什么可以看到的。
谢谢你的回复。对于我们来说,这是一个非常棘手的问题,因为它在重新启动服务器后每月都会重复进行。