pmi*_*hna 10 .net c# wcf asynchronous
我的OperationContract:
public List<MessageDTO> GetMessages()
{
List<MessageDTO> messages = new List<MessageDTO>();
foreach (Message m in _context.Messages.ToList())
{
messages.Add(new MessageDTO()
{
MessageID = m.MessageID,
Content = m.Content,
Date = m.Date,
HasAttachments = m.HasAttachments,
MailingListID = (int)m.MailingListID,
SenderID = (int)m.SenderID,
Subject = m.Subject
});
}
return messages;
}
Run Code Online (Sandbox Code Playgroud)
在服务引用配置中,我选中了"生成异步操作"选项.我如何使用生成的GetMessagesAsync()?在网上我找到了使用的例子AsyncCallback,但是我不熟悉它.有没有办法以一些友好的方式使用它async和await.NET 4.5中的关键字?如果没有,我该怎么做才能异步调用该方法?
如果选择"Generate asynchrounous operations",您将获得必须使用回调的"旧"行为.
如果要使用新的async/await语法,则必须选择"生成基于任务的操作"(默认情况下已选中).
使用默认Wcf模板时,这将生成以下代理代码:
public System.Threading.Tasks.Task<string> GetDataAsync(int value) {
return base.Channel.GetDataAsync(value);
}
Run Code Online (Sandbox Code Playgroud)
如你所见,没有更多的回调.而是Task<T>返回a.
您可以通过以下方式使用此代理:
public static async Task Foo()
{
using (ServiceReference1.Service1Client client = new ServiceReference1.Service1Client())
{
Task<string> t = client.GetDataAsync(1);
string result = await t;
}
}
Run Code Online (Sandbox Code Playgroud)
您应该使用调用方法标记调用方法,async然后await在调用服务方法时使用.
| 归档时间: |
|
| 查看次数: |
13096 次 |
| 最近记录: |