我想将三个额外的参数传递给事件:
geocodeService.GeocodeCompleted += new EventHandler<GeocodeService.GeocodeCompletedEventArgs>(geocodeService_GeocodeCompleted);
参数是
int id
string color
double heading
private void Geocode(string strAddress, int waypointIndex, int id, string color, double heading)
{
// Create the service variable and set the callback method using the GeocodeCompleted property.
GeocodeService.GeocodeServiceClient geocodeService = new GeocodeService.GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
// NEED TO PASS id, color, heading TO THIS EVENT HANDLER
geocodeService.GeocodeCompleted += new EventHandler<GeocodeService.GeocodeCompletedEventArgs>(geocodeService_GeocodeCompleted);
GeocodeService.GeocodeRequest geocodeRequest = new GeocodeService.GeocodeRequest();
geocodeRequest.Credentials = new Credentials();
geocodeRequest.Credentials.ApplicationId = ((ApplicationIdCredentialsProvider)BingMap.CredentialsProvider).ApplicationId;
geocodeRequest.Query = strAddress;
geocodeService.GeocodeAsync(geocodeRequest, waypointIndex);
}
private void geocodeService_GeocodeCompleted(object sender, GeocodeService.GeocodeCompletedEventArgs e)
{
GeocodeResult result = null;
if (e.Result.Results.Count > 0)
{
result = e.Result.Results[0];
if (result != null)
{
// this.ShowMarker(result);
this.ShowShip(result);
}
}
}
答案 0 :(得分:0)
您可以扩展GeocodeService.GeocodeServiceClient添加这些属性,然后在事件方法geocodeService_GeocodeCompleted中使用sender参数:
var service = (GeocodeService.GeocodeServiceClient) sender;
快速和脏(IMHO)版本是使用lambda表达式:
答案 1 :(得分:0)
看起来GeocodeCompletedEventArgs
延伸AsyncCompletedEventArgs
。 AsyncCompletedEventArgs
具有属性UserState
,可用于存储异步事件的状态信息。此状态通常作为参数传递给引发事件的方法。
有关详细信息,请参阅此问题:Bing GeocodeService userState usage as custom additional parameter