Сдвоенные интерфейсы и события
Хотя можно создать интерфейс событий как двойной, существует ряд хороших причин для разработки. Основной причиной является то, что источник события будет запускаться только через vtable или через Invoke
оба. Если источник событий запускает событие как прямой вызов метода vtable, методы никогда не будут использоваться, IDispatch
и ясно, что интерфейс должен был быть чистым интерфейсом vtable. Если источник события запускает событие в качестве вызова Invoke
, методы vtable никогда не будут использоваться, и ясно, что интерфейс должен был быть неинтерфес. Если вы определяете интерфейсы событий как двойные, вам потребуется, чтобы клиенты реализовали часть интерфейса, который никогда не будет использоваться.
Примечание.
Этот аргумент не применяется к двум интерфейсам, как правило. С точки зрения реализации двойники — это быстрый, удобный и хорошо поддерживаемый способ реализации интерфейсов, доступных широкому спектру клиентов.
Существуют дополнительные причины, чтобы избежать двух интерфейсов событий; Ни Visual Basic, ни Internet Explorer не поддерживают их.