我hava小窗口的应用程序,其中用户输入代码和按钮单击事件代码在运行时编译。运行时代码编译给出的错误 - 进程无法访问文件
当我第一次点击按钮时,它工作正常,但如果多次点击同一个按钮,它会给出错误“该进程无法访问Exmaple.pdb文件,因为它正在被另一个进程使用”。。下面的示例代码示例
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Reflection;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll" }, "Example" + ".exe", true); //iloop.ToString() +
parameters.GenerateExecutable = true;
CompilerResults results = csc.CompileAssemblyFromSource(parameters,
@"using System.Linq;
class Program {
public static void Main(string[] args) {}
public static string Main1(int abc) {" + textBox1.Text.ToString()
+ @"
}
}");
results.Errors.Cast<CompilerError>().ToList().ForEach(error => Error = error.ErrorText.ToString());
var scriptClass = results.CompiledAssembly.GetType("Program");
var scriptMethod1 = scriptClass.GetMethod("Main1", BindingFlags.Static | BindingFlags.Public);
StringBuilder st = new StringBuilder(scriptMethod1.Invoke(null, new object[] { 10 }).ToString());
result = Convert.ToBoolean(st.ToString());
}
}
}
我如何解决这个问题,所以,如果我点击同一个按钮不止一次..它应能正常工作。
感谢,
任何线索..来解决这个问题? – sia 2014-10-30 14:47:47