Страница: 1 |
Страница: 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 было написано "достаточно одного запуска" - лажу пишут, однако.