Я использую Аргументы событий, активированных файлами, аргументы , чтобы связать файлы в моем приложении видеопроигрывателя.Поэтому, когда пользователь дважды щелкает видеофайл, он открывает и воспроизводит файл в моем приложении, а также получает все соседние файлы, поэтому я также могу добавить их в список воспроизведения.Для этой цели я использую следующий код.
var file=args.Files[0];
StorageFileQueryResult neighboringFilesQuery=args.NeighboringFilesQuery;
var startingIndexunit = await neighboringFilesQuery.FindStartIndexAsync(file);
int startingIndex = Convert.ToInt32(startingIndexunit); //this is where exception occurs
не всегда, но иногда, когда я открываю файл, я получаю System.OverFlowException , потому что код пытается ввести очень большое число мусора в int32 , что вызывает исключение.
После дальнейшего изучения я обнаружил, что обычно, когда я дважды щелкаю файл и получаю соседние файлы, я получаю все файлы в NeighborFilesQuery (включая 1 файл, который я щелкнул, чтобы открыть), чтобы я мог просто найти его индекс, чтобы я мог установить начальный индекс моего списка воспроизведения в своем приложении и воспроизводить файл, по которому щелкнули, в правильном положении.
Нов некоторых других случаях, например, когда я открываю .flv или какой-либо файл .rm , я получаю все соседние файлы в соседнем файле Query, но я не получаю файл, по которому щелкнул, поэтому, когдакод пытается получить индекс этого файла, этот файл не существует в этом списке, поэтому я получаю индекс мусора.
так почему этот API-интерфейс настолько несовместим?иногда он включает выбранный файл в список файлов запросов, а иногда нет?
Примечание обратите внимание, что здесь я говорю только о сценарии с одним нажатием файла, а не о нескольких файлахоткрыт вместе (потому что в этом случае запрос файлов должен быть пустым, и это другой сценарий)