SplashScreen IOException


SplashScreen s = new SplashScreen(System.Reflection.Assembly.GetExecutingAssembly(),"splash.png");
s.Show(false);

При вызове s.Show() независимо от того, является ли параметр false или true, он выдает IOException с сообщением

Не удается найти всплеск ресурса.png '

Несмотря на этот всплеск.png добавляется к ресурсам, и его Действие сборки является ресурсом.

Я заметил много проблем при использовании изображений в WPF, а также с управлением Image.

3 4

3 ответа:

Согласно принципу " мой код не работает, и я не знаю, почему. Мой код работает, и я не знаю, почему", я решил эту проблему.

Сначала я сделал Действие сборки изображения всплеска в качестве ресурса. (Размещение изображения в качестве встроенного ресурса не решило проблему).

Во-вторых, мой код:

SplashScreen s = new SplashScreen("resources/splash.png");
s.Show(false);
/* do some things */
s.Close(Timespan.FromMilliseconds(300));

Даже несмотря на этот всплеск.png добавляется к ресурсам, и его действие сборки-Resource.

Неверно построить действие, сделать его Embedded Resource. Если у вас все еще есть проблемы, то используйте ildasm.exe, чтобы посмотреть на манифест сборки для .директива mresource для обеспечения правильного внедрения ресурса с ожидаемым именем.

Или используйте файл, следуя этим шагамИнструкции . Как правило, более здравый подход, так как не имеет большого смысла иметь большой ресурс занимайте адресное пространство в течение всего срока службы программы, когда оно требуется только на короткий промежуток времени при запуске программы.

Попробуйте явно указать имя сборки, даже если вызывающий объект находится в той же сборке, что и ресурс.

Вот как это выглядит с синтаксисом URI пакета:

pack://application:,,,/MyAssemblyName;component/MyResourcesFolder/MyImage.png

Http://msdn.microsoft.com/en-us/library/aa970069.aspx