2017-02-14 29 views
0

Я использую библиотеку Emgu для создания видео из набора изображений, большую часть времени, когда я запускаю программу, она генерирует MemoryOutOfBound Exception, часть кода используя videoWriter() показан нижеКак увеличить память, используемое настольное приложение в Visual Studio C#, чтобы избежать исключения MemoryOutOfBound

p = dp.FileName + ".avi"; 
VideoWriter v = new VideoWriter(p, 24, hd.Width, hd.Height, true); 
string filename = ""; 
int iiii = 0; 
for (int j = 0; j < a; j++) 
{ 
    filename="frames" + j + ".bmp"; 
    hdd = new Bitmap(jj + "\\new1\\" + filename); 
    hd = new Image<Bgr, Byte>(hdd); 
    v.WriteFrame(hd); 
} 
v.Dispose(); 
+0

вы также можете начать с Disposing экземпляра Bitmap в 'hdd', и я не уверен, какой тип изображения точно есть, но если он реализует IDisposable, сделайте то же самое. Сообщите о своем прогрессе. – rene

+0

'Dispose' не мгновен, может быть, достаточно проинструктировать GC о распределении памяти (' AddMemoryPressure'/'RemoveMemoryPressure'). В противном случае вы должны вызвать 'GC.Collect' и подождать. – Sinatr

+0

Не знаю, поможет ли это: http://wiki.tesnexus.com/index.php/2-4GB_game_memory_limits_and_solutions#LAA_in_General и https://helloacm.com/large-address-aware/ –

ответ

0

Если вам нужна программа, чтобы иметь возможность использовать большой объем памяти (> 2 Гб), вам нужно будет скомпилировать для 64-разрядных платформ (и быть запущены на одном). Если вам нужны большие объекты (> 2 ГБ), вам также необходимо добавить следующий код в файл App.config:

<runtime>  
    <gcAllowVeryLargeObjects enabled="true" /> 
</runtime> 

Примечание: Я считаю, что вы должны работать под управлением .NET 4.5 или выше, для этого feature

 Смежные вопросы

  • Нет связанных вопросов^_^