J'ai été chargé de créer du code Java avec des fonctionnalités similaires au code ci-dessous. Actuellement, j'ai du mal à comprendre exactement ce que fait le code et comment simuler l'effet en Java.Délégués C# vers Java et traitement asynchrone des méthodes
#region "Send Aggregate Event"
/// <summary>
/// Delegate for async sending the AggregateEvent
/// </summary>
/// <param name="request"></param>
public delegate void SendAggregateEventAsync(AE request);
SendAggregateEventAsync _sendAggregateEventAsync;
/// <summary>
/// IAsyncResult pattern to async send the AggregateEvent
/// </summary>
/// <param name="request"></param>
/// <param name="callback"></param>
/// <param name="state"></param>
/// <returns></returns>
public IAsyncResult BeginSendAggregateEvent(AE request, AsyncCallback callback, Object state)
{
_sendAggregateEventAsync = new SendAggregateEventAsync(SendAggregateEvent);
return _sendAggregateEventAsync.BeginInvoke(request, callback, state);
}
public void EndSendAggregateEvent(IAsyncResult result)
{
object state = result.AsyncState;
_sendAggregateEventAsync.EndInvoke(result);
}
/// <summary>
/// Send an aggregate event to the Device Webserver
/// </summary>
/// <param name="request">The AggregateEvent request</param>
public void SendAggregateEvent(AE request)
{
if (request == null) throw new ArgumentNullException("request");
String message = ChangeDatesToUTC(MessageHelper.SerializeObject(typeof(AE), request), new String[] { "EventTime" }, url);
SendMessage(message);
}
#endregion
Il existe plusieurs autres événements ayant tous un code similaire à celui fourni ci-dessus. À partir des commentaires, je comprends que le code est destiné à gérer de manière asynchrone la méthode SendAggregateEvent. Ce que je ne comprends pas, c'est pourquoi le modificateur delegate est utilisé, ou comment répliquer ce type de gestion asynchrone en Java.
également la lecture de ce fil
Je comprends qu'il n'y a aucun moyen « facile » pour simuler la fonctionnalité délégué en java. Est-il nécessaire d'avoir la fonctionnalité de délégué pour faire traiter la méthode SendAggregateEvent de manière asynchrone? Si non, quelqu'un peut-il suggérer comment je ferais cela?
En C#, il utilise les délégués comme un moyen facile d'exécuter aynchronously la méthode, en utilisant la méthode 'BeginInvoke' du délégué. Voir http://stackoverflow.com/questions/14961450/where-are-clr-defined-methods-like-delegate-begininvoke-documented pour une documentation à ce sujet. –