1
编辑C#winforms:我的GUI和逻辑分离是否正确完成?
基于下面的建议发送逻辑代码GUI的代表,我想出了这样的代码:
Action ClearFunction = new Action(()=>Invoke(new Action(delegate() { ResultsBox.Clear(); })));
是否有可能缩短呢?
这是我的C#窗体表单程序的一部分。
当我开始转换为使用另一个线程的代码,它开始觉得很这些混沌,我产生的线程和创建包裹在代表这样的逻辑代码可以实际使用的GUI公共方法。
请提供更好的成语或改进架构的建议。谢谢。
// form1.cs
public void ClearResultsBox()
{
ResultsBox.Clear();
}
public void PrintResults(string s)
{
ResultsBox.AppendText(s);
}
private void SearchButton_Click(object sender, EventArgs e)
{
var t = new Thread(() => SearchCore.Execute(DirectoryBox.Text, SearchBox.Text, this));
t.Start();
}
// logic.cs
class SearchCore
{
delegate void ClearFunction();
delegate void AppendFunction(string a);
static ClearFunction clear;
static AppendFunction print;
public static void Execute(string path, string searchterm, MainForm form)
{
clear = new ClearFunction(() => form.Invoke(new ClearFunction(form.ClearResultsBox)));
print = new AppendFunction(s => form.Invoke(new AppendFunction(form.PrintResults), s));
clear();
@senfo没有真正更给它。执行是一种长时间运行的方法(2分钟),每隔几秒钟输出一次。 – Unknown 2009-05-20 01:20:40
您能否提供一些您想要完成的更多细节?你有一些非常重大的设计缺陷,但我不想让你错误的方向,直到我明白你想去的地方。例如,你是否只是试图保持UI的响应? – senfo 2009-05-20 01:22:04