日期:2014-05-17  浏览次数:21197 次

C# 三层框架引用 循环依赖项 问题

UI层引用了BLL层,当UI层new新线程调用BLL中A函数执行大量业务逻辑时,这时A函数要向UI层textBox不断打印信息,我在UI层中写了一个打印函数W,可是BLL无法引用UI层,系统提示“未能引用UI,将导致循环依赖项”。
请问我怎么向textBox不断打印信息呢?

------解决方案--------------------
使用委托就可以了:
BLL中:
namespace BLL
{
public class Test
{
public delegate void RefreshDelegate(ref string msg);

public void Call(RefreshDelegate d)
{
string msg = string.Empty;
for (int i = 1; i <= 10; i++)
{
msg = string.Format("{0}\r\n", i);
d(ref msg);
}
}
}
}

UI层:
namespace CSWin
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}

private void btn_Test_Click(object sender, EventArgs e)
{
BLL.Test test = new BLL.Test();
BLL.Test.RefreshDelegate d = new BLL.Test.RefreshDelegate(Refresh);
test.Call(d);
}

private void Refresh(ref string msg)
{
this.textBox1.Text += msg;
}
}
}