static BrowseItem fileInfoToBrowseItem(FileInfo fi, bool getMediaDuration, bool setNameToFullPath) { BrowseItem output = new BrowseItem(); // Name / path if (setNameToFullPath) { output.Name = fi.FullName; } else { output.Name = fi.Name; } output.Size = fi.Length; output.IsDirectory = false; if (getMediaDuration) { try { TimeSpan mDuration = DurationOfMediaFile_OSSpecific(fi.FullName); output.Duration = mDuration.TotalSeconds; } catch (Exception ex) { Functions.WriteLineToLogFileIfAdvanced("Could not get duration of media file: " + fi.FullName + " :"); Functions.WriteExceptionToLogFileIfAdvanced(ex); } } return(output); }
/// <summary> /// Stop a streamer and remove it from the local list of streamers /// </summary> /// <param name="streamerID"></param> /// <returns></returns> public bool StopStreamer(int streamerID) { if (Settings.Default.DebugStreaming) { Functions.WriteLineToLogFile("StreamingManager: Received stop command for streamer " + streamerID.ToString()); } try { MediaStreamer mediaStreamer = GetStreamerByID(streamerID); if (mediaStreamer == null) { return(false); } // Abort streamer (on a different thread) AbortMediaStreamerAndDeleteFiles((object)mediaStreamer); /* * System.Threading.ParameterizedThreadStart ts = new System.Threading.ParameterizedThreadStart(AbortMediaStreamerAndDeleteFiles); * System.Threading.Thread t_abortStreamer = new System.Threading.Thread(ts); * t_abortStreamer.Start(mediaStreamer); */ // Remove from streamers RemoveStreamer(streamerID); return(true); } catch (Exception ex) { Functions.WriteExceptionToLogFileIfAdvanced(ex); } return(false); }
void AbortMediaStreamerAndDeleteFiles(object obj) { try { MediaStreamer ms = (MediaStreamer)obj; ms.AbortStreaming(true); } catch (Exception ex) { // Must catch exceptions on other threads Functions.WriteExceptionToLogFileIfAdvanced(ex); } }