相关疑难解决方法(0)

是否可以动态编译和执行C#代码片段?

我想知道是否可以将C#代码片段保存到文本文件(或任何输入流),然后动态执行它们?假设提供给我的内容可以在任何Main()块中编译好,是否可以编译和/或执行此代码?出于性能原因,我更愿意编译它.

至少,我可以定义一个他们需要实现的接口,然后他们将提供一个实现该接口的代码"section".

c#

164
推荐指数
5
解决办法
11万
查看次数

用AppDomains替换Process.Start

背景

我有一个Windows服务,它使用各种第三方DLL来执行PDF文件的工作.这些操作可能会占用相当多的系统资源,并且在发生错误时偶尔会出现内存泄漏.DLL是围绕其他非托管DLL的托管包装器.

现行解决方案

我已经在一个案例中通过在专用控制台应用程序中包含对其中一个DLL的调用并通过Process.Start()调用该应用程序来缓解此问题.如果操作失败并且存在内存泄漏或未释放的文件句柄,则无关紧要.该过程将结束,操作系统将恢复句柄.

我想将这个相同的逻辑应用到我的应用程序中使用这些DLL的其他地方.但是,我对于在我的解决方案中添加更多控制台项目并编写更多可以调用Process.Start()并解析控制台应用程序输出的样板代码感到非常兴奋.

新解决方案

专用控制台应用程序和Process.Start()的优雅替代方案似乎是使用AppDomains,如下所示:http: //blogs.geekdojo.net/richard/archive/2003/12/10/428.aspx.

我在我的应用程序中实现了类似的代码,但单元测试并不乐观.我在一个单独的AppDomain中创建一个测试文件的FileStream,但不要处理它.然后我尝试在主域中创建另一个FileStream,并且由于未释放的文件锁而失败.

有趣的是,将空DomainUnload事件添加到工作程序域会使单元测试通过.无论如何,我担心可能创建"工人"AppDomains无法解决我的问题.

思考?

代码

/// <summary>
/// Executes a method in a separate AppDomain.  This should serve as a simple replacement
/// of running code in a separate process via a console app.
/// </summary>
public T RunInAppDomain<T>( Func<T> func )
{
    AppDomain domain = AppDomain.CreateDomain ( "Delegate Executor " + func.GetHashCode (), null,
        new AppDomainSetup { ApplicationBase = Environment.CurrentDirectory } );

    domain.DomainUnload += ( sender, e ) => …
Run Code Online (Sandbox Code Playgroud)

c# appdomain .net-3.5 process.start

49
推荐指数
2
解决办法
1万
查看次数

C#中的叉概念

由于C#支持线程,有没有办法在C#中实现fork概念?

提前致谢....

.net c# clr fork

10
推荐指数
1
解决办法
2万
查看次数

我可以从命令行运行.NET程序集中的代码吗?

我有一个.NET类库(作为.dll文件),该库包含一个带有静态方法的类.有没有办法从命令行调用该方法?

.net c# command-line assemblies

7
推荐指数
2
解决办法
6377
查看次数

标签 统计

c# ×4

.net ×2

.net-3.5 ×1

appdomain ×1

assemblies ×1

clr ×1

command-line ×1

fork ×1

process.start ×1