void timer_Tick(object sender, EventArgs e) { if (mpc.Connected) { if (mpc.Update()) { window.Invoke((MethodInvoker) delegate() { window.mpc_OnUpdate(mpc, null); }); if (mpc.PreviousStatus == null || mpc.PreviousStatus.SongID != mpc.CurrentStatus.SongID) { mpc.UpdateCurrentSongInfo(); lcd.Artist = mpc.CurrentSong.Artist; lcd.Title = mpc.CurrentSong.Title; lcd.Album = mpc.CurrentSong.Album; window.Invoke((MethodInvoker) delegate() { window.mpc_OnTrackChange(mpc, null); }); } if (mpc.PreviousStatus == null || mpc.PreviousStatus.PlaylistVersion != mpc.CurrentStatus.PlaylistVersion) { mpc.UpdateCurrentPlaylist(); window.Invoke((MethodInvoker) delegate() { window.mpc_OnPlaylistChange(mpc, null); }); } if (mpc.CurrentStatus.PlaybackState == PlaybackState.Stopped) { lcd.PlaylistPosition = -1; lcd.PlaylistLength = -1; lcd.TrackTime = -1; lcd.TrackLength = -1; lcd.SetProgress(0, 0, 0); } else { lcd.PlaylistPosition = mpc.CurrentStatus.Song; lcd.PlaylistLength = mpc.CurrentStatus.PlaylistLength; if (mpc.CurrentStatus.Time != null) { lcd.TrackTime = mpc.CurrentStatus.Time.Current; lcd.TrackLength = mpc.CurrentStatus.Time.Total; lcd.SetProgress((int)mpc.CurrentStatus.Elapsed, 0, mpc.CurrentStatus.Time.Total * 1000); } } } lcd.SetPlaybackState(mpc.CurrentStatus.PlaybackState); } lcd.Update(); }