WPF: производительность DataGrid падает после загрузки Accessibility.dllC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 WPF: производительность DataGrid падает после загрузки Accessibility.dll

Сообщение Anonymous »

Когда я работаю с большим набором данных и множеством столбцов в WPF DataGrid, прокрутка обычно приемлема. Но как только Accessibility.dll загружается, производительность падает, и при использовании DataGrid он становится очень медленным и прерывистым.
Это происходит, когда где-то в приложении отображается всплывающая подсказка. Но это также может быть ComboBox , ContextMenu или какой-либо другой элемент управления.
В тот момент, когда отображается первая всплывающая подсказка, я вижу в окне вывода, что dll загружается:

DataGridScrollPerformance.exe (CLR v4.0.30319: DataGridScrollPerformance.exe): загружено C:\windows\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility .dll'.

Это приложение WPF, использующее .NET Framework 4.8.
Я нашел похожий вопрос , но без ответа:
https://stackoverflow.com/questions/603 ... nt-of-data
Чтобы воспроизвести проблему, я создал минимальное приложение WPF с приведенными ниже классами.
При сравнении прокрутки сверху вниз до загрузки Accessibility.dll и после нее при загрузке есть заметная разница.
Я сделал 3 разных элемента управления, чтобы принудительно загрузить Accessibility.dll. Подсказка, поле со списком и контекстное меню.
Model.cs
using System;

namespace DataGridScrollPerformance
{
public class Model
{
public string Id { get; set; }
public string Guid { get; set; }
public DateTime DateForId { get; set; }
public int Property1 { get; set; }
public int Property2 { get; set; }
public int Property3 { get; set; }
public int Property4 { get; set; }
public int Property5 { get; set; }
public int Property6 { get; set; }
}
}

MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Windows;

namespace DataGridScrollPerformance
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataGrid.ItemsSource = GetDemoData();
}

private List GetDemoData()
{
var demoData = new List();
var random = new Random();
for (var i = 0; i < 1000; i++)
{
demoData.Add(new Model
{
Id = i.ToString(),
Guid = Guid.NewGuid().ToString(),
DateForId = new DateTime(1900, 1, 1).AddDays(i),
Property1 = random.Next(0, 1000),
Property2 = random.Next(0, 1000),
Property3 = random.Next(0, 1000),
Property4 = random.Next(0, 1000),
Property5 = random.Next(0, 1000),
Property6 = random.Next(0, 1000),
});
}
return demoData;
}
}
}

MainWindow.xaml
































Подробнее здесь: https://stackoverflow.com/questions/781 ... ets-loaded
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Производительность модели Foundation Foundation Apple (.fmadapter) значительно падает после развертывания в приложение i
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Производительность модели Foundation Foundation Apple (.fmadapter) значительно падает после развертывания в приложение i
    Anonymous » » в форуме IOS
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Почему Compose добавляет дополнительный текст в Accessibility?
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Почему Compose добавляет дополнительный текст в Accessibility?
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Почему Compose добавляет дополнительный текст в Accessibility?
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

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