Re: Deleage Methods - was Events

Jim <[email protected]> Tue, 20 Sep 2016 16:51:54 -0600
Newsgroups gmane.comp.java.ikvm.devel
Message-ID <[email protected]>

For my edification, what's the method signature for BeginInvoke and 
EndInvoke in this delegate?

     public static final class MessageDelegate extends MulticastDelegate
     {
         public MessageDelegate(Method m) { }
         public native void Invoke(MessageNotifierEventArgs args);
         //public native IAsyncResult BeginInvoke(AsyncCallback 
callback, Object obj);
         //public native void EndInvoke(IAsyncResult res);
         public interface Method
         {
             void Invoke(MessageNotifierEventArgs arg);
         }
     }

Thanks,

Jim

On 09/17/2016 02:12 AM, Jeroen Frijters wrote:
> Hi Jim,
>
> There's no support for defining events from the Java side.
>
> Regards,
> Jeroen
>
>> -----Original Message-----
>> From: Jim [mailto:[email protected]]
>> Sent: Friday, September 16, 2016 23:15
>> To: [email protected]
>> Subject: [Ikvm-developers] Events
>>
>> Given this C# snippet:
>>
>>      class MainClass
>>      {
>>          public static void Main (string[] args)
>>          {
>>              [...]
>>              MessageReceiveNotifier messageNotifier = [...]
>>              messageNotifier.MessageReceived +=
>> c_HostCommandMessageReceived;
>>              [...]
>>          }
>>
>>          static void c_HostCommandMessageReceived (object sender,
>> MessageNotifierEventArgs e)
>>          {
>>              // the status will be -1 to indicate an unsolicited message.
>>              Console.WriteLine ("The Host Command Message {1} was
>> received with Status {0}.", e.Status, e.Message);
>>              [...]
>>          }
>>      }
>>
>> I would expect that this in Java:
>>
>> import cli.System.EventHandler;
>>
>>
>> public class MessageReceiveNotifier  {
>>
>>      [...]
>>
>>      public static void add_MessageReceived(EventHandler
>> messageReceivedEventHandler) {
>>      }
>>
>>      public static void remove_MessageReceived(EventHandler
>> messageReceivedEventHandler) {
>>
>>      }
>>
>> }
>>
>> Would meet the requirements of the line:
>>
>>
>>      messageNotifier.MessageReceived += c_HostCommandMessageReceived;
>>
>> However MonoDevelop gives me the error:
>>
>> Type 'MessageReceiveNotifier' does not contain a definition for
>> 'MessageReceived' and no extension method 'MessageReceived' of type
>> 'MessageReceiveNotifier' can be found.  Are you missing an assembly
>> reference?
>>
>> The Java class are in the same assembly and there is no complaint about
>> MessageReceiveNotifier (and the MessageNotifierEventArgs class) so I
>> think that the assemblies are all correct.
>>
>> I have tried static and non-static for the add_ remove_ methods.
>>
>> Help and ideas would be much appreciated?
>>
>> Thanks,
>>
>> Jim
>>
>>
>> --
>> Jim Redman
>> (505) 662 5156 x85
>> http://www.ergotech.com

-- 
Jim Redman
(505) 662 5156 x85
http://www.ergotech.com


------------------------------------------------------------------------------