2012-06-22 4 views
3

Если я (например)Максимальное количество процессов excel?

for (int i=0;i<22;i++) 
{ 
    var app = new Excel.Application(); 
} 

затем 22 первенствует процессы создаются.

Однако, если я

for (int i=0;i<25;i++) 
{ 
    var app = new Excel.Application(); 
} 

Он создает 22 первенствует процессы, но большинство из них исчезают, и лишь немногие из них осталось.

Есть ли предел 22 или что-то еще? Можно ли это увеличить?

Спасибо!

EDIT: с помощью следующего кода не происходит:

var apps = new List<Application>(); 
for (int i=0;i<25;i++) 
{ 
     apps.Add(new Application()); 
} 
+2

улов 22 от Microsoft? сколько имеющейся памяти у вас есть? Кстати, чего вы пытаетесь достичь, кроме отопления вашего процессора? – Aprillion

+4

Это так просто: ваше приложение var выходит за рамки, и сборщик мусора очищает вещи? –

+0

@deathApril: 12 гигабайт памяти. Ну, это выделенный сервер, который использует excel для автоматизации вычислений. –

ответ

2

сбор мусора проломил ... с помощью следующего кода, он работает:

var apps = new List<Application>(); 
for (int i=0;i<25;i++) 
{ 
     apps.Add(new Application()); 
} 
0

Я помню статью Raymond Chen. Что-то о том, что вы загружаете слишком много одного и того же процесса для вашей конкретной машины, ОС отключает вас. Для каждой машины это различно (так как это зависит от производительности вашей машины).

Однако я не вижу 25 как предел. Это кажется немного слишком маленьким, даже для старых машин. Какие-либо из ваших файлов ссылаются на данные из одних и тех же файлов, из-за чего некоторые из них закрываются преждевременно, потому что другой экземпляр Excel блокирует файл?

Мне нужна дополнительная информация, чтобы узнать, что происходит на самом деле.

+0

Привет, ну, на самом деле это просто консольное приложение с циклом for, без дополнительного кода участвует в этом тесте. Никакие другие файлы excel не открыты. Я запустил его на своем (быстром и последнем) компьютере и на другом компьютере с одинаковым результатом: кажется, что после 22 экземпляров excel запускается механизм очистки. –

+1

См. Ответ (Lud's) выше ответа. Вот почему я попросил предоставить дополнительную информацию, я предположил, что вы инициализировали var и сохраняли это объявление во внешнем списке. Если вы только объявляете 'var app' в цикле, то ваши экземпляры будут очищены после того, как вы покинете область цикла. Люд прав, сбор мусора вбил. –

+2

@NickFunk - Вы действительно наделили Люда своим ответом? –

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