我有这样的代码:
private static StringBuilder building = new StringBuilder();
public static bool Starting(string path, string Code)
{
using (var pv = new CSharpCodeProvider(providerOptions))
{
pv.CompileAssemblyFromSource(parameters, Code);
}
// Много кода ...
if (File.Exists(path))
{
File.WriteAllText("Log.txt", building.ToString());
return true;
}
else { return false; }
}
在按钮上启动后,UI 会冻结几秒钟。
尝试在单独的线程中运行Thread
var potinizialize = new Thread(() => { Starting("path", "code"); });
potinizialize.Start();
potinizialize.Join(); // нужно сделать ожидания завершения метода
但即使这样也无济于事,表格均匀地冻结了几秒钟。
有哪些可能的用例?这样表格就不会被阻塞。
阻塞 UI 线程的典型问题。在第一种情况下,您对他的 I/O 操作进行了评分。在第二种情况下,您创建了一个线程并同步等待它完成。试试看:
取而代之: