我的WCF服务中有两种方法:
public interface IPriceService
{
[OperationContract(Name = "GetPrice")]
decimal GetPrice(long ID);
[OperationContract(Name = "GetProductID")]
long GetProductID(string productName);
}
在一个方面,我想做两件事。我想调用方法GetProductID
,然后调用方法GetPrice
。所以我这样做:
PriceService.PriceServiceClient service;
service = new PriceService.PriceServiceClient();
service.PobierzPrzejsciaCompleted += service_GetPriceCompleted;
service.PobierzStacjeBenzynoweCompleted += service_GetProductIDCompleted;
service.GetProductIDAsync(productName);
service.GetPriceAsync(Id);
GetProductID
会返回一个ID,因此我会在GetProductIDCompleted
事件中获取该ID。然后我将此ID作为参数传递给GetPrice
方法。
我想要的是: GetProductIdAsync
方法应首先执行。 GetPriceAsync
方法应该等到上一个方法完成。
答案 0 :(得分:1)
如果您想让它们同步执行,您也可以简单地使用同步版本:
var productId = service.GetProductID(productName)
var price = service.GetPrice(productId)
如果您想坚持异步调用,可以从service.GetPriceAsync
已完成的函数调用service_GetProductIDCompleted
函数...
答案 1 :(得分:0)
您可以使用BackgroundWorker对象,然后订阅run worker completed事件。在那种情况下,您将能够运行它。
类似
Worker.RunWorkerAsync()
Worker.RunWorkerCompleted += youractionwhencompletedmethod