Я думаю, что различия между ArrayList
и List
:
List
, где T - тип значения быстрее, чем ArrayList
. Это связано с тем, что List
избегает бокса / распаковки (где T - тип значения). ArrayList
используются только для обратной совместимости. (это не реальная разница, но я думаю, что это важно). ArrayList
, тогда List
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
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)
{
// ...
}
}
Измените действие сборки на «Ресурс». Также неправильный URL-адрес вашего пакета. Либо используйте:
Source="pack://application:,,,/Resource/UserCost2013Open16.png"
, либо просто
Source="/Resource/UserCost2013Open16.png"
Вы должны добавить что-нибудь в Обозреватель решений Visual Studio. Вместо того, чтобы просто копировать изображение в папку в проводнике Windows, нажмите «Правая кнопка» в любой папке в обозревателе решений, перейдите в «Добавить»> «Существующий элемент ...» и выберите путь к вашему ресурсу, который будет добавлен.
Есть 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
Copy to output directory
не требуется в моем случае.
– Felix
7 February 2017 в 05:34
В моем случае у меня были изображения в отдельном проекте с именем 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, хотя.
component
в путь источника было критическим для отображения моих изображений во время выполнения.
– Ted
22 July 2015 в 10:47
Перейдите к своему изображению в папке ресурсов, щелкните правой кнопкой мыши по изображению, перейдите к свойствам. Щелкните свойство BuildAction и установите для него значение Ресурс из none. Это будет работать.
Предполагая, что у вас есть
Build Action
на Resource
URI-PACK-FORMAT
В моем случае он все еще не показывался.
Clean & Rebuild
Не просто Build исправил его для меня!
BuildAction
& amp; UriPack
был прав. Изображение не отображалось = & gt; Clean & Rebuild
, и это сработало.
– Felix D.
7 November 2017 в 11:41
Я определил свое изображение следующим образом:
<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"/>
Source = "file: /// D: /100x100.jpg" /> работает для меня.
pack://application:,,,/...
, похоже, очень не очень нравится .XAML во время выполнения. Выдает ошибку - «непризнанный / недействительный бла-бла». У меня есть проектUIDomain
со всеми представлениями, презентаторами, моделями и изображениями. Похоже, чтоResources/*.png
ожидается в каталогеviews/ ... ... /Resources/img.png
, когда он больше похож на../Resources/img.png
– IAbstract 11 September 2015 в 18:23