解决方案 »
- GTK#教程
- 这样删除提示类型不匹配
- 这句VB.net怎么转换成C#的?
- delete事件出错,,高手帮忙违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条。
- 如何设置网页连接超时的时间
- 看见论坛里说用xmlhttp: javascript-->xmlhttp-->web service实现即时通讯,能给小弟这方面的资料吗?还有定时刷新!!
- 在2005里面将科学计数转化为double(急求答案)
- 【求救】昨天晚上还好使,今天一运行就出错了!
- asp.net可以读取远程文件的内容吗
- 请问我该怎么从函数里跳出来?
- .net中怎么正确调用vc写的com组件?
- C# 实体类中定义 [DbColumn("") 参数代表什么意义
public delegate void OnCloseEventHandler(NetworkStream stream);
public delegate void OnMessageEventHandler(NetworkStream stream, string message);
public delegate void OnErrorEventHandler(NetworkStream stream, Exception ex);
public event OnOpenEventHandler OnOpen;
public event OnMessageEventHandler OnMessage;
public event OnErrorEventHandler OnError;其中,为事件委托定义参数。实际上参数还可以声明为复杂的自定义对象类型。
{
public string ca(Action<string> mm)
{
MessageBox.Show("到这里了!");
return mm("我");
} }
如何安排顺序执行,可以有几种方法:
1、不用异步,直接顺序执行(等待异步结果也认为是顺序执行)。
2、continuation(也叫任务延续),比如Task.ContinueWith。
3、使用Dotnet4.5的async await。第三种方法(内部实现也类似ContinueWith),写起来代码比较清晰,比如:async void button1_Click(object o, EventArgs e)
{
string m = await GetMM("world");
this.Text = m;
}async Task<string> GetMM(string name)
{
await Task.Delay(1000);
return "hello " + name;
}
对于业务F,,需要连续传输N个SQL语句所以必须得到每一步操作服务器返回的结果才行
委托的定义是在服务程序定义的,不是在客户程序定义的。客户程序只是提供委托的实现而已。所以如果你的客户程序写var server = new B();
server.ca(proc);private void proc(string mm)
{
.....
}(
这就是得到服务的返回值。当你访问服务功能时,服务来回调你的客户程序提供的委托方法,那么给你这个方法传递的调用参数就是你说的“返回值”。而如果服务程序定义的委托不是Action<string>,而是Func<string>,这就是服务程序需要得到你客户程序的返回值。因此在委托参数中定义string,这就是客户得到服务的返回值。而在委托的返回类型中定义string,这就是客户给服务去返回值。你所说的“返回”这个词儿是有歧义的,你没有理解前半句“委托参数是返回值”的意思。
action.BeginInvoke(1, 2, new AsyncCallback(iar =>
{
System.Runtime.Remoting.Messaging.AsyncResult ar = (System.Runtime.Remoting.Messaging.AsyncResult)iar; Func<int, int, int> actionCB = (Func<int, int, int>)ar.AsyncDelegate; result = actionCB.EndInvoke(iar);
}), null); while (true)
{
if (result != -1)
{
Console.WriteLine(result);
break;
}
} Console.ReadKey();