Вы должны сначала установить JDK в свою систему.
Установить Java Home
JAVA_HOME = C: \ Program Files \ Java \ jdk1.7.0 [Местоположение вашего каталога установки JDK]
Как только у вас установлен путь установки JDK:
[/g2]
Установите JAVA Path под системную переменную
PATH = C : \ Program Files \ Java \ jdk1.7.0; [Добавить значение с точкой с запятой]
[/g3]
События/делегаты C# многоадресно передаются, таким образом, делегат самостоятельно список. Из класса, для получения отдельных вызывающих сторон можно использовать:
if(field != null) { // or the event-name for field-like events
// or your own event-type in place of EventHandler
foreach(EventHandler subscriber in field.GetInvocationList())
{
// etc
}
}
Однако для присвоения внезапно просто используйте + = или прямое присвоение:
SomeType other = ...
other.SomeEvent += localEvent;
Обновление (благодарят комментаторам): делегируйте средства immuntability, что клонирование ничего не достигает по присвоению.
, Когда каждый пишет:
myDelegate += AHandler
абсолютно новый экземпляр делегата создан и присвоен myDelegate.
Поэтому код ниже работал бы точно то же без вызова Клона.
<час>MulticastDelegate (базовый тип) имеет метод Клона.
, Чтобы смочь добраться до базового делегата Вы, возможно, должны были бы избежать обычного помощника, которого генерирует ключевое слово события, и справьтесь, вещи непосредственно (пользовательский добавляют и удаляют средства доступа).
Для показа этого:
class Program { public delegate void MyDelegate(string name); public event MyDelegate EventOne; public void HandlerOne(string name) { Console.WriteLine("This is handler one: {0}", name); } public void HandlerTwo(string name) { Console.WriteLine("This is handler two: {0}", name); } public void HandlerThree(string name) { Console.WriteLine("This is handler three: {0}", name); } public void Run() { EventOne += HandlerOne; EventOne += HandlerTwo; Console.WriteLine("Before clone"); EventOne("EventOne");MyDelegate eventTwo = (MyDelegate)EventOne.Clone();MyDelegate eventTwo = EventOne; Console.WriteLine("Afterclonecopy"); EventOne("EventOne"); eventTwo("eventTwo"); Console.WriteLine("Change event one to show it is different"); EventOne += HandlerThree; EventOne("EventOne"); eventTwo("eventTwo"); } static void Main(string[] args) { (new Program()).Run(); } }
Если событие является тем, опубликованным другим классом, Вы не можете - по крайней мере, не надежно. В то время как мы часто думаем о событии, как являющемся только что переменной делегата, это - на самом деле просто пара методов: добавьте и удалите (или подпишитесь и откажитесь от подписки).
, Если это - Ваш собственный код, это публикует событие, это легко - можно заставить добавить/удалить средства доступа сделать то, что Вы любите.
Взглянули на моя статья о событиях и видят, помогает ли это Вам. В противном случае предоставьте больше подробную информацию о том, что Вы хотите сделать, указывая, какие биты кода Вы можете изменить и который Вы не.