Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Помогите с переводом Добавлено: 22.07.05 10:07  

Автор вопроса:  Stef
Мной уже задавался вопрос о "Ресурсах" (почему программа жрет так много ресурсов).
После походов по сайтам я нашел следующее:
Первый параметр – это хендл процесса, который можно получить из System.Diagnostics.Process.GetCurrentProcess().Handle, а второй и третий параметр – это соответственно минимальный и максимальный размер рабочего множества. Понятно, что рассчитывать нужные размеры – задача та еще, поэтому функция имеет один приятный сервис: если в качестве второго и третьего параметра указать -1 (минус единицу), операционная система сама посчитает, какие размеры нужны вашему приложению и установит рабочее множество по минимуму. Для примера я написал небольшое консольное приложение:

using System;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
      class Class1
      {
            [ DllImport( "kernel32.dll" ) ]
            public static extern bool SetProcessWorkingSetSize( IntPtr handle,
                        int minimumWorkingSetSize, int maximumWorkingSetSize );

            [STAThread]
            static void Main(string[] args)
            {
                  Console.WriteLine( "Before" );
                  Console.ReadLine();

                  SetProcessWorkingSetSize( System.Diagnostics.Process.GetCurrentProcess().Handle,
                        -1, -1 );

                  Console.WriteLine( "After" );
                  Console.ReadLine();
            }
      }
}[/CODE]
Текст дан на Си.
При попытке переписать на VB получил Ошибки в тексте:
Inherits System.Windows.Forms.Form 'Строка "написанная средой"
Inherits System.Runtime.InteropServices...
...
Помогите плис с переводом на VB очень нада.
Может кто-то уже делал такое то выложите на страницу текст или киньте на мыло vkondratyuk@bk.ru готовый пример или ссылку туда где он уже есть.
Буду очень благодарен всем откликнувшимсяю

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 dma_caviar



Вопросов: 0
Ответов: 6
 Профиль | | #1 Добавлено: 22.07.05 10:14
Public Declare Function SetProcessWorkingSetSize Lib "kernel32" (ByVal handle As IntPtr, ByVal minimumWorkingSetSize As Integer, ByVal maximumWorkingSetSize As Integer) As Boolean

Ответить

Номер ответа: 2
Автор ответа:
 dma_caviar



Вопросов: 0
Ответов: 6
 Профиль | | #2 Добавлено: 22.07.05 10:15
Вызывать так:

SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess.Handle, -1, -1)

Ответить

Номер ответа: 3
Автор ответа:
 Stef



Вопросов: 16
Ответов: 17
 Профиль | | #3 Добавлено: 22.07.05 10:49
Спасибочки, заработало.
Но! возник следующий вопрос:
при визове
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess.Handle, -1, -1)
действительно происходит сброс, но как сделать так, штоб ета процедура происходила после каждого события в программе, или единственное спасение цикл

Ответить

Номер ответа: 4
Автор ответа:
 dma_caviar



Вопросов: 0
Ответов: 6
 Профиль | | #4 Добавлено: 22.07.05 10:58
Так ведь я же и писал, что придется ее запускать по какому-то таймеру.
Вообще не нравится мне эта процедура.
Если интервал таймера не большой, то в TaskManager-е светит, что прога (которая раньше занимала 60-70 мегов) теперь весит всего несколько байт!!! Неспроста это все.
Где-то я слышал, что M$ не рекомендует ее испрользовать.

Ответить

Номер ответа: 5
Автор ответа:
 Stef



Вопросов: 16
Ответов: 17
 Профиль | | #5 Добавлено: 22.07.05 11:05
Ето действительно так:
до запуска 57640КБ
после 1642
заметьте разницу
И еще, на странице ASP.net было написано "достаточно одного запуска" - лажу пишут, однако.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам