Показать сообщение отдельно
Старый 19.08.2015, 12:29   #1  
axm2013
Гость
 
n/a
Чтение при залоченном файле
На основе
http://dev.goshoom.net/en/2011/10/bi...ata-in-ax2012/
X++:
filename             filename   = "C:\\XXX.xls";
    System.IO.FileStream fileStream;
    System.IO.MemoryStream memoryStream;
    int                    size;
    container con;
    fileStream = System.IO.File::OpenRead(filename);
    memoryStream = new System.IO.MemoryStream();
   
    
    size = fileStream.get_Length();    
    
    memoryStream.SetLength(size);
    fileStream.Read(memoryStream.GetBuffer(), 0, size); //write to MemoryStream
    con = Binary::constructFromMemoryStream(memoryStream).getContainer(); //from MemoryStream to container
Внезапно выяснилось что если "C:\\XXX.xls" открыть ранее работать не получается: метод System.IO.File::OpenRead( успешно падает
Маленькое вуаля на основе
http://stackoverflow.com/questions/1...-a-locked-file
X++:
filename             filename   = "C:\\XXX.xls";
    System.IO.FileStream fileStream;
    System.IO.MemoryStream memoryStream;
    int                    size;
    container con;
    fileStream   = new System.IO.FileStream(filename, System.IO.FileMode::Open, System.IO.FileAccess::Read, System.IO.FileShare::ReadWrite);
    memoryStream = new System.IO.MemoryStream();
    
    
    size = fileStream.get_Length();    
    
    memoryStream.SetLength(size);
    fileStream.Read(memoryStream.GetBuffer(), 0, size); //write to MemoryStream
    con = Binary::constructFromMemoryStream(memoryStream).getContainer(); //from MemoryStream to container
И файл вполне себе читается.
Может кому то окажется полезным, хотя вещь вроде простая. Сам столкнулся с этим к примеру с блокировкой при прикреплении документов.
За это сообщение автора поблагодарили: Logger (5).