У нас есть приложение .net в C#, которое позволяет пользователям на карте домена пользователям/ролям в другом домене.Счетчик объектов GDI 10k
На панели отображения свойств (которая представляет собой просто форму, показанную в виде диалога в основной форме) есть два списка - 1 для исходного домена, а другой для всех ранее выбранных целевых доменов. Listview заполняется пользователями и группой - по одной строке для каждого пользователя/группы. У нас есть значок в каждой строке, чтобы различать пользователя и группу.
Все было в порядке, до недавнего времени один из наших клиентов столкнулся с ситуацией, когда нет. из дескрипторов GDI, созданных нашим приложением, пересек 10k - это верхний предел возможного количества ручек, которые могут быть созданы процессом в системе Windows. Итак, теперь мы думаем о том, как мы можем использовать, чтобы уменьшить количество созданных ручек. Вот несколько вопросов, на которые мы просто хотим быть уверены. Какой из них создать новую ручку (мы подозреваем, все из них):
1)
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
2)
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
3)
this.label2.Text = resources.GetString("label2.Text");
Пожалуйста, не позаботьтесь о форматировании вопроса и сообщите мне, если какая-либо дополнительная информация требуется для соответствующего заключения.
Что мы можем сделать, чтобы уменьшить число. созданных ручек? Каковы правильные способы избежать такого сценария? Могут ли ручки быть убиты явно, чтобы уменьшить количество (просто говоря)? Любые предложения или вещи, о которых нужно позаботиться, оцениваются. Благодарю.
Кроме того, мы в эту строку кода:
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
Итак, как мы высвободит DC и Bitmaps обрабатывает?
Третий не создает ручку. Первые два делают –
Получите копию [Process Explorer] (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) и проверите ручки с видом ручек. Тогда вы сейчас начнете работать. Удачи. :) –
Спасибо, Шрирам. Я использовал GDIView и добавил скриншот, а также отредактировал мой вопрос. Что вы предлагаете сейчас? – MrClan