求助,关于wcf的问题
我做的一个WCF,采用的是winform作为服务端,定义的是当客户端访问服务端后可以把客户端所对服务端进行的调用信息显示出来,客户端信息可以获得,可不知道为什么就是无法在winform的任何控件上显示,用messagebox.show可以弹出来(也就是说客户端访问信息可以获取到,就是不能显示出来)。用的是WSHttpBinding绑定,求高手教我。 --------------------编程问答-------------------- 数据 都拿到了,没显示跟wcf 没关系了。 --------------------编程问答-------------------- 恩,我也是想的和WCF没关系,可惜无论什么控件就是无法显示出来,连textbox都不行,但可以通把消息框把信息弹出来。 --------------------编程问答-------------------- 可以分步调试一下,看看是什么地方出的问题。然后贴下代码,这样比较好分析。 --------------------编程问答--------------------
ServerLog.Items.Add(e.Message);
MessageBox.Show(e.Message);
这个e.Message我用断点调试过是有值的,用下面那个消息框也可以弹出来。就是不能在任何控件上显示出来。 --------------------编程问答--------------------
public void AddServerLog(object sender, messageEventArgs e)
{
if (e.MessageType == "1")
{
textBox1.Text = e.Message;
ServerLog.Items.Add(e.Message);
MessageBox.Show(e.Message);
}
}
--------------------编程问答-------------------- 单步调试一下 --------------------编程问答--------------------
已经单步调试过了。找不到原因,莫名其妙不显示。 --------------------编程问答-------------------- 对了,我试过了,弹出控制台窗口,可以通过console.write显示出来,晕死,就是在控件上显示不出来。 --------------------编程问答-------------------- 不在一个线程里面吧?
或者是控件没有刷新? --------------------编程问答-------------------- 是在一个线程里面,而且我赋给textbox控件也显示不出来,textbox控件怎么刷新? --------------------编程问答-------------------- 用this.invoke封送到界面 --------------------编程问答-------------------- 用多线程和这个都试过了,不行,还是不显示。 --------------------编程问答-------------------- 把你客户端调用代码贴出来看看。 --------------------编程问答-------------------- 哦,试试赋值后Application.DoEvent()
--------------------编程问答--------------------
private void button1_Click(object sender, EventArgs e)--------------------编程问答-------------------- 上面是客户端调用代码。 --------------------编程问答--------------------
{
EndpointAddress endAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamplesop/Service/CalculatorService");
CalculatorClient calClient = new CalculatorClient(new WSHttpBinding(), endAddress);
double a =double.Parse( textBox1.Text);
double b = double.Parse(textBox2.Text);
string str = comboBox1.SelectedItem.ToString();
double c=0;
switch(str)
{
case "加":
c=calClient.Add(a,b);
break;
case "减":
c= calClient.Subtrct(a, b);
break;
case "乘":
c= calClient.Multiply(a, b);
break;
case "除":
c= calClient.Divide(a, b);
break;
}
calClient.Close();
textBox3.Text = c.ToString();
}
还是不行。... --------------------编程问答-------------------- 哦,c算出具体值了么?
--------------------编程问答-------------------- 是的,算出了。 --------------------编程问答-------------------- 那肯定是控件出问题了吧 --------------------编程问答-------------------- textBox3.Text = c.ToString();
显不出数据…… --------------------编程问答-------------------- 调试 监视 textBox3.Text --------------------编程问答-------------------- calClient.Close();
textBox3.Text = c.ToString();
这里出异常吗?还是说textBox3始终里显示0?
--------------------编程问答-------------------- 根本就不显示东西。 --------------------编程问答-------------------- 不出异常,而且断点调试的时候显示已赋值。感觉好象操作的不是当前的控件一样,调试显示是赋值了,但控件硬是什么东西都没有。而且我试了一下,用文件流可以保存到文本里面是可以显示东西的。 --------------------编程问答-------------------- 感觉是否是安全方面的问题,因为我这个东西是通过客户端调用之后产生的操作来对服务端控件进行操作。 --------------------编程问答-------------------- 建议你重新拉个textbox --------------------编程问答--------------------
唉,重拉也没用,因为所有的控件都这样,应该不是控件的问题。 --------------------编程问答-------------------- 你是不是字体颜色设不正确了? --------------------编程问答-------------------- 这个可以保证,绝对是正确的。。。。 --------------------编程问答-------------------- 哈哈,有些奇怪了。不过感觉像是线程问题。 --------------------编程问答-------------------- 你固定赋个"123"看看能否显示? --------------------编程问答-------------------- 检查其他代码,可能有清空textBox内容的代码存在,这往往是低级错误导致的。
补充:.NET技术 , C#