Отсутствие изображения во время выполнения [дубликат]

Я думаю, что различия между ArrayList и List:

  1. List, где T - тип значения быстрее, чем ArrayList. Это связано с тем, что List избегает бокса / распаковки (где T - тип значения).
  2. Многие источники говорят - обычно ArrayList используются только для обратной совместимости. (это не реальная разница, но я думаю, что это важно).
  3. Отражение проще с неродным ArrayList, тогда List
  4. ArrayList обладает свойством IsSynchronized , Итак, легко создать и использовать syncronised ArrayList. Я не нашел свойство IsSynchronized для List. Также помните, что этот тип синхронизации относительно неэффективен, msdn ):
    var arraylist = new ArrayList();
    var arrayListSyncronized = ArrayList.Synchronized(arraylist
    Console.WriteLine($"syncronized {arraylist.IsSynchronized}");
    Console.WriteLine($"syncronized {arrayListSyncronized.IsSynchronized}");
    
    var list = new List();
    var listSyncronized = ArrayList.Synchronized(list);
    Console.WriteLine($"syncronized {list.IsSynchronized}");//error, no such prop
    Console.WriteLine($"syncronized {list.IsSynchronized}");//error, no such prop
      
  5. ArrayList обладает свойством ArrayList.SyncRoot, которое может использоваться для синхронизации ( MSDN ). List не имеет свойства SyncRoot, поэтому в следующей конструкции вам нужно использовать некоторый объект, если вы используете List:
    ArrayList myCollection = new ArrayList();
    lock(myCollection.SyncRoot) //  ofcourse you can use another object for this goal
    {
        foreach (object item in myCollection)
        {
            // ...
        }
    }
    
  6. 45
    задан Community 23 May 2017 в 12:17
    поделиться

    8 ответов

    Измените действие сборки на «Ресурс». Также неправильный URL-адрес вашего пакета. Либо используйте:

    Source="pack://application:,,,/Resource/UserCost2013Open16.png"
    

    , либо просто

    Source="/Resource/UserCost2013Open16.png"
    
    58
    ответ дан Phil 19 August 2018 в 00:40
    поделиться
    • 1
      Я только что добавил изображение с помощью панели свойств конструктора, которую я сделал в первую очередь, и предоставил другой URI тому, который у меня был, и был похож на верхний, который вы показали - это не сработало. Я снова добавил изображение в качестве ресурса - снова не повезло. I , затем снова добавил изображение снова - это дало мне URI, как нижнее шоу ... Taadaa! Это сработало, почему это случилось, я понятия не имею, но это хорошо знать в будущем. Спасибо за ваше время. – MoonKnight 26 March 2013 в 14:20
    • 2
      @Killercam: Я испытал нечто очень похожее; посмотрите на мой EDIT3 в этот вопрос для возможного объяснения того, почему повторное добавление может быть полезным (хотя и не для того, почему он работал для вас только во второй попытке ). – O. R. Mapper 14 January 2014 в 15:12
    • 3
      pack://application:,,,/..., похоже, очень не очень нравится .XAML во время выполнения. Выдает ошибку - «непризнанный / недействительный бла-бла». У меня есть проект UIDomain со всеми представлениями, презентаторами, моделями и изображениями. Похоже, что Resources/*.png ожидается в каталоге views/ ... ... /Resources/img.png, когда он больше похож на ../Resources/img.png – IAbstract 11 September 2015 в 18:23
    • 4
      Благодарю. Ваше решение сработало. – Mukesh Kumar 5 October 2015 в 13:01

    Вы должны добавить что-нибудь в Обозреватель решений Visual Studio. Вместо того, чтобы просто копировать изображение в папку в проводнике Windows, нажмите «Правая кнопка» в любой папке в обозревателе решений, перейдите в «Добавить»> «Существующий элемент ...» и выберите путь к вашему ресурсу, который будет добавлен.

    1
    ответ дан Amir Hossein Jamsidi 19 August 2018 в 00:40
    поделиться

    Есть 2 решения: 1: изменить настройки изображения:

    Build Action = Content
    Copy to output directory = Copy if newer
    Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"
    

    2: при использовании приложения вместо siteoforigin в исходном пути, у вас есть возможные пути:

    a) Изображение будет в SubFolder под названием «Ресурсы», а файл .exe будет небольшим

    Source="pack://application:,,,/Resources/UserCost2013Open16.png"
    Build Action = Content
    Copy to output directory = Copy if newer
    

    b) Изображение будет включено в .exe, и никакая подпапка с файлом изображения не будет существовать

    Source="pack://application:,,,/Resources/UserCost2013Open16.png"
    Build Action = Resource
    Copy to output directory = Copy if newer
    
    26
    ответ дан Basti 19 August 2018 в 00:40
    поделиться

    В моем случае у меня были изображения в отдельном проекте с именем Common, и изображения были в папке с именем Resources в этом проекте. В моем другом проекте я добавил ссылку на Common и установил источник изображений следующим образом:

    <Image Source="/Common;component/Resources/anImage.png"/>
    

    У изображений есть Build Action, установленный на Resource и Copy to Output Directory, чтобы Do not copy. Однако по какой-то странной причине он не работал, пока я не удалил каждый файл сборки в своем решении и сделал Clean Solution и Build Solution. Не уверен, почему, но все это началось во время выполнения, как только я перестроил все. Я все еще не могу понять, почему он работал в Design Time, хотя.

    5
    ответ дан Darien Pardinas 19 August 2018 в 00:40
    поделиться
    • 1
      Добавление строки component в путь источника было критическим для отображения моих изображений во время выполнения. – Ted 22 July 2015 в 10:47

    Перейдите к своему изображению в папке ресурсов, щелкните правой кнопкой мыши по изображению, перейдите к свойствам. Щелкните свойство BuildAction и установите для него значение Ресурс из none. Это будет работать.

    1
    ответ дан Deepak 19 August 2018 в 00:40
    поделиться

    Предполагая, что у вас есть

    • , установите Build Action на Resource
    • правильно заданный путь, используя URI-PACK-FORMAT

    В моем случае он все еще не показывался.

    Clean & Rebuild Не просто Build исправил его для меня!

    5
    ответ дан Felix D. 19 August 2018 в 00:40
    поделиться
    • 1
      @walteronassis это еще ответ ... эрго тоже не стоит. И так как я получил 4 Upvotes, я предполагаю, что это помогло 4 ppl и решило проблему. – Felix D. 7 November 2017 в 11:26
    • 2
      Итак, у вас есть такая же настройка, как в начальном вопросе, и вам не нужно было изменять действие сборки, а также параметры копирования или исходный путь? – walteronassis 7 November 2017 в 11:39
    • 3
      Да. BuildAction & amp; UriPack был прав. Изображение не отображалось = & gt; Clean & Rebuild, и это сработало. – Felix D. 7 November 2017 в 11:41
    • 4
      Что это значит? «Правильно»? – walteronassis 7 November 2017 в 13:12
    • 5
      @walteronassis Не является источником проблемы. – Felix D. 7 November 2017 в 14:31
    • 6

    Я определил свое изображение следующим образом:

    <Image Source="/Resources/Images/icon.png"/>
    

    Изображение отображается в дизайнере Visual Studio , но при запуске приложения изображение не отображается! Это сделало меня сумасшедшим! Я попытался выполнить все Build Action s с помощью clean / build, не повезло.

    В моем случае проблема вызвана тем, что элемент управления (который использует Image ), и само приложение находится в разных проектах. Ресурсы / Изображения находятся в проекте Controls . В результате приложение попыталось найти icon.png в своей собственной папке Debug, но на самом деле оно находится в папке Debug Controls .

    Итак, для меня работают два решения:

    1) поместите Resources / Images в проект приложения (не очень хорошо, когда есть несколько проектов, которые используют элементы управления из проекта Controls , но он работает)

    2) явно указать имя проекта Controls внутри Изображение :

    <Image Source="/Controls;component/Resources/Images/icon.png"/>
    
    1
    ответ дан Mari 19 August 2018 в 00:40
    поделиться

    Source = "file: /// D: /100x100.jpg" /> работает для меня.

    0
    ответ дан Neo 19 August 2018 в 00:40
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: