Программа C# аварийно завершает работу при настройке URL-адреса медиаплеера объекта axWindowsMediaPlayer из отдельного оC#

Место общения программистов C#
Ответить
Anonymous
 Программа C# аварийно завершает работу при настройке URL-адреса медиаплеера объекта axWindowsMediaPlayer из отдельного о

Сообщение Anonymous »

Я создаю программу C# Windows Forms в Visual Studio, которая постоянно аварийно завершает работу всякий раз, когда я устанавливаю URL-адрес объекта axWindowsMediaPLayer проигрывателя Windows Media.
Существует два окна формы: MainWindow и ВидеоФорм. В MainWindow есть кнопки для выбора файла через fileDialog и кнопка для открытия окна VideoForm, в котором есть медиаплеер. Я создал собственный класс Video.cs для сбора информации о видеофайле. Он также обрабатывает fileDialog. Однако когда я устанавливаю URL-адрес объекта медиаплеера, программа вылетает с кодом 3221225477 (0xc0000005) «Нарушение прав доступа». Таким образом, URL-адрес медиаплеера в окне VideoForm устанавливается из события нажатия кнопки в MainWindow. Я не уверен, что это является причиной нарушения доступа. Я запустил Visual Studio от имени администратора, чтобы убедиться, что у нее есть доступ к файлу. Я проверил путь к файлу, он правильный. Я пробовал с предшествующим @ и без него.
Эта строка вызывает сбой:
VideoWindow.MediaPlayer.URL = @auditVideo.Path;

Соответствующий код приведен ниже:
MainWindow.cs:
Video auditVideo = new Video();
private void ButtonImportVideo_Click(object sender, EventArgs e)
{
auditVideo.InitializeFile(openFileDialogVideo);

textBoxVideoFile.Text = auditVideo.Name;
}
private void ButtonPlayVideo_Click(object sender, EventArgs e)
{
VideoForm VideoWindow = new VideoForm();
try
{
VideoWindow.MediaPlayer.URL = @auditVideo.Path; // This is what causes the crash
}
catch(Exception ex)
{
MessageBox.Show("could not load the file" + ex.Message);
}
Console.WriteLine("VideoWindow.MediaPlayer.URL is {0}", @VideoWindow.MediaPlayer.URL);

VideoWindow.Show();
}

Класс Video.cs:
namespace AVCAudit
{
internal class Video
{
internal OpenFileDialog OpenFileDialog { get; private set; } //This is an AutoProperty which generates the private field behind the scenes
internal string Path { get; private set; } //set should be private for Path and Name since they refer to the actual file on disk which doesn't change
internal string Name { get; private set; }
internal void InitializeFile(OpenFileDialog fileDialogArg)
{
OpenFileDialog = fileDialogArg;
OpenFileDialog.InitialDirectory = @"C:\Users\schaney\Desktop\Neology\AVC Audit Project\avc_audit\Recordings";
OpenFileDialog.Title = "Open audit video file";
OpenFileDialog.Filter = "(mp3,wav,mp4,mov,wmv,mpg)|*.mp3;*.wav;*.mp4;*.mov;*.wmv;*.mpg|all files|*.*";
if (OpenFileDialog.ShowDialog() == DialogResult.OK)
{
Path = fileDialogArg.FileName;
Name = fileDialogArg.SafeFileName;
}
}
}
}

VideoForm.cs
namespace AVCAudit
{
public partial class VideoForm : Form
{
internal String test { get; set; }
public VideoForm() //constructor for VideoForm class. The rest of the partial class is defined in VideoForm.Designer.cs
{
InitializeComponent(); //so the constructor for this class just runs the InitializeComponent method defined in the Designer.cs file
}
private void MediaPlayer_Enter(object sender, EventArgs e)
{

}
}
}


Подробнее здесь: https://stackoverflow.com/questions/730 ... aplayer-ob
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»