#uwp #windows-10-universal #inkcanvas
#uwp #windows-10-universal #inkcanvas
Вопрос:
Попытка создать пользовательскую отмену и повтор на InkCanvas
. Однако после некоторого стресс-тестирования (добавить много штрихов, отменить и повторить много раз) приложение вылетает с:
Система.Исключение ExecutionEngineException не было обработано. HResult =-2146233082
в цикле foreach моего AddToRedoList
метода. У кого-нибудь есть идеи, как перехватить и исправить исключение?
private void AddToRedoList(InkStroke addStroke) {
var addInkPoint = addStroke.GetInkPoints();
var addInkPointList = new List<InkPoint>();
foreach (var point in addInkPoint) {
addInkPointList.Add(new InkPoint(point.Position, point.Pressure));
}
redoCustomStrokeList.Add(new CustomStroke() {
InkPoints = addInkPointList,
DrawingAttributes = addStroke.DrawingAttributes
});
}
private void UndoOnClick(object sender, RoutedEventArgs e) {
var allStrokes = InkImage.InkPresenter.StrokeContainer.GetStrokes();
var undoStroke = allStrokes[allStrokes.Count - 1];
AddToRedoList(undoStroke);
allStrokes[allStrokes.Count - 1].Selected = true;
InkImage.InkPresenter.StrokeContainer.DeleteSelected();
}
private void RedoOnClick(object sender, RoutedEventArgs e) {
var lastRedoInkPoints = redoCustomStrokeList[redoCustomStrokeList.Count-1];
InkImage.InkPresenter.StrokeContainer.AddStroke(CreateStroke(lastRedoInkPoints));
redoCustomStrokeList.Remove(lastRedoInkPoints);
}
}
Комментарии:
1. Не могли бы вы предоставить весь проект воспроизведения? Приведенный выше код отсутствует и может не воспроизводить вашу проблему на моей стороне.