Answered by:
Load file async crashes if in snapmode

Question
-
Does anyone know why the following code crashes if in snapmode ?
It works fine in full screen mode.
void SimpleTextRenderer::loadfile() { //pick pcb FileOpenPicker^ openPicker = ref new FileOpenPicker(); openPicker->ViewMode = PickerViewMode::List; //or Thumbnail; openPicker->SuggestedStartLocation = PickerLocationId::PicturesLibrary; openPicker->FileTypeFilter->Append(".pcb"); task<StorageFile^> fileTask(openPicker->PickSingleFileAsync()); fileTask.then([=](StorageFile^ file) { if (file==nullptr) return; String^ fileName="4000.pcb"; fileName=file->Name; previousfname=fileName; gerberfilename=file->DisplayName; //get name with no extension !!! StorageFolder^ item = KnownFolders::PicturesLibrary; auto getFileOp = item->GetFileAsync(fileName); getFileOp->Completed = ref new AsyncOperationCompletedHandler<StorageFile^> ([=](IAsyncOperation<StorageFile^>^ operation, AsyncStatus status) { auto storageFile = operation->GetResults(); auto openOp = storageFile->OpenAsync(FileAccessMode::Read); openOp->Completed = ref new AsyncOperationCompletedHandler <IRandomAccessStream^> ([=](IAsyncOperation<IRandomAccessStream^>^ operation, AsyncStatus status) { auto istream = operation->GetResults(); auto dr = ref new DataReader(istream); auto loadOp = dr->LoadAsync(istream->Size); loadOp->Completed = ref new AsyncOperationCompletedHandler<UINT> ([=](IAsyncOperation<UINT>^ operation, AsyncStatus status) { auto bytesRead = operation->GetResults(); int cx,wurd,dx; wurd=0; //wurd=(UINT16)rev(dr->ReadUInt16()); ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; //{load SYMBOLS} wurd=(UINT16)rev(dr->ReadUInt16()); cx = wurd; wurd=(UINT16)rev(dr->ReadUInt16()); cx = cx + (wurd * 65536); for (dx = 1; dx <= cx; dx++) { wurd=(UINT16)rev(dr->ReadUInt16()); symboldata[dx] = wurd; } ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; //{load TRACKS} wurd=(UINT16)rev(dr->ReadUInt16()); cx = wurd; wurd=(UINT16)rev(dr->ReadUInt16()); cx = cx + (wurd * 65536); for (dx = 1; dx <= cx; dx++) { wurd=(UINT16)rev(dr->ReadUInt16()); trackdata[dx] = wurd; } ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; //{load PADS} wurd=(UINT16)rev(dr->ReadUInt16()); cx = wurd; wurd=(UINT16)rev(dr->ReadUInt16()); cx = cx + (wurd * 65536); for (dx = 1; dx <= cx; dx++) { wurd=(UINT16)rev(dr->ReadUInt16()); // {padata[cx]=wurd;} } ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; //{load TEXT} wurd=(UINT16)rev(dr->ReadUInt16()); cx = wurd; wurd=(UINT16)rev(dr->ReadUInt16()); cx = cx + (wurd * 65536); for (dx = 1; dx <= cx; dx++) { wurd=(UINT16)rev(dr->ReadUInt16()); textdata[dx] = wurd; } ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; //{load CONS} wurd=(UINT16)rev(dr->ReadUInt16()); cx = wurd; wurd=(UINT16)rev(dr->ReadUInt16()); cx = cx + (wurd * 65536); for (dx = 1; dx <= cx; dx++) { wurd=(UINT16)rev(dr->ReadUInt16()); // {condata[dx]=wurd;} } ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; //{load INTLIB} wurd=(UINT16)rev(dr->ReadUInt16()); cx = wurd; wurd=(UINT16)rev(dr->ReadUInt16()); cx = cx + (wurd * 65536); for (dx = 1; dx <= cx; dx++) { wurd=(UINT16)rev(dr->ReadUInt16()); slibrary[dx] = wurd; } dr->DetachStream(); ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; removeduplicatessymbols(); //in case some schems got duplicated lineuptracks();// {in case pcb come from translator with new symbol shapes} // loadrefstring(); adjustzoom(); redraw(); /* print out load file size // char buffer [33]; _itoa_s(bytesRead, buffer,10); titlestring=buffer; shortredraw(); */ }); }); }); }); }
n.Wright
Monday, September 2, 2013 2:40 PM
Answers
-
If you use a filepicker then the filepicker will crash out in snap mode.
I have stopped the filepicker working with a warning if in snapped mode.
n.Wright
- Marked as answer by nigelwright7557 Monday, September 2, 2013 8:02 PM
Monday, September 2, 2013 8:01 PM