Ознакомьтесь с полной документацией по событию PlayStateChange, поддерживаемому WindowsMediaPlayer
Если вы не знаете, что такое event
в C#:
События служат той цели, которую вы описали - они уведомляют, когда что-то происходит (момент, когда и почему происходит это что-то , определяется разработчиками классов). В нашем случае WindowsMediaPlayer
имеет событие PlayStateChange
, которое запускается при изменении состояния воспроизведения объекта.
Так что теперь, даже если игрок меняет свое состояние и событие инициируется классом, мы никогда не узнаем об этом, так как никогда не подписывались на получение уведомления о событии.
Для этого вы пишете свою собственную функцию (которая обычно называется handler ). Эта функция должна иметь определенную подпись - она должна возвращать void
и принимать два аргумента: первый тип object
(который можно преобразовать в тип WindowsMediaPlayer, поскольку этот тип является источником нашего события) и второй из некоторых введите с дополнительными данными о событии)
Пример прямо из ссылки выше:
private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
// this code is executed when the playstate changed
// no need to check - developers of the WindowsMediaPlayer class
// tell you, that it happened, by calling this function
// they even give you some data about this changed state via arguments (sender and e above)
// Test the current state of the player and display a message for each state.
switch (e.newState)
{
case 0: // Undefined
currentStateLabel.Text = "Undefined";
break;
case 1: // Stopped
currentStateLabel.Text = "Stopped";
break;
... // check the link for more states
}
}
Далее вы должны подписать эту недавно написанную функцию для события. Поэтому, когда состояние воспроизведения изменяется, класс player будет вызывать нашу функцию:
// Add a delegate for the PlayStateChange event.
player.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(player_PlayStateChange);
Итак, в основном, у вас есть функция player_PlayStateChange
, принимающая два аргумента о событии, и эта функция вызывается, когда PlayStateChange
событие player
объекта запущено. Запутывающий AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler
- это класс, который просто оборачивает нашу функцию, вы можете присоединить функцию только после ее обертывания.
Я рекомендую вам узнать больше о событиях и делегатах в C# на более простых и понятных примеры или учебники. Концепция событий имеет решающее значение для программирования.