Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Резидентная задача- как сделать? Добавлено: 05.08.04 17:29  

Автор вопроса:  Barulya
Смысл в том,что в своей программе я хочу использовать модуль, который будет работать как инспектор всех задач поставленных через главную программу, т.е. аналог задач OutLook'а (через определенный период времени сверялся с базой данных не подгружая основных форм, но использовал иконку в трее), причем основное требование, чтобы данный модуль работал независимо от основной программы (запущена она или нет) и занимал минимум системных ресурсов. Подскажите как это сделать??

Ответить

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

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 05.08.04 17:37
Написать windows-сервис... Однако будут сложности с интерфейсом.

А можно ограничиться обычным Windows Application.

Ответить

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



Вопросов: 29
Ответов: 55
 Профиль | | #2 Добавлено: 05.08.04 17:44
Ну если я, допустим, буду использовать обычное WindowsApplication, то мне придется использовать форму и привязывать к ней таймер, а также весь остальной инструментарий. Можно ли без загрузки формы первоначально использовать просто таймер и рекурсивно запускать приложение?

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 05.08.04 17:50
Можно.
ЯПо































Можно. Пользуйтесь таймером из пространства имен System.Threading. Он
не требует наличия формы, так как основан не на оконных сообщениях.

Ответить

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



Вопросов: 29
Ответов: 55
 Профиль | | #4 Добавлено: 05.08.04 17:53
Как??

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 05.08.04 17:57
Сорри за формат предыдущего сообщения: почтовик сглючил :(

Вот пример использования таймера:

Imports System
Imports System.Threading

Class TimerExampleState
Public counter As Integer = 0
Public tmr As Timer
End Class 'TimerExampleState

Class App

Public Shared Sub Main()
Dim s As New TimerExampleState()

' Create the delegate that invokes methods for the timer.
Dim timerDelegate As New TimerCallback(AddressOf CheckStatus)

' Create a timer that waits one second, then invokes every second.
Dim timer As New Timer(timerDelegate, s, 1000, 1000)

' Keep a handle to the timer, so it can be disposed.
s.tmr = timer

' The main thread does nothing until the timer is disposed.
While Not (s.tmr Is Nothing)
Thread.Sleep(0)
End While
Console.WriteLine("Timer example done.")
End Sub 'Main

' The following method is called by the timer's delegate.
Shared Sub CheckStatus(state As [Object])
Dim s As TimerExampleState = CType(state, TimerExampleState)
s.counter += 1
Console.WriteLine("{0} Checking Status {1}.", DateTime.Now.TimeOfDay, s.counter)
If s.counter = 5 Then
' Shorten the period. Wait 10 seconds to restart the timer.
s.tmr.Change(10000, 100)
Console.WriteLine("changed...")
End If
If s.counter = 10 Then
Console.WriteLine("disposing of timer...")
s.tmr.Dispose()
s.tmr = Nothing
End If
End Sub 'CheckStatus
End Class 'App


Ответить

Номер ответа: 6
Автор ответа:
  Артём Л.



ICQ: 280044491 

Вопросов: 43
Ответов: 227
 Профиль | | #6 Добавлено: 05.08.04 18:02
что-то не понятно в чем проблема...
создаете программу с одним модулем
Module Module1

Public Declare Auto Function SetProcessWorkingSetSize Lib "kernel32.dll"
(ByVal handle As IntPtr, ByVal minimumWorkingSetSize%, ByVal
maximumWorkingSetSize%) As Boolean
Sub main()
Dim t As New NotifyIcon
t.Icon = New Icon("...")
t.Visible = True
Dim cm As New ContextMenu
cm.MenuItems.Add(New MenuItem("Close", New EventHandler(AddressOf Click)))
t.ContextMenu = cm
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Hand
le, -1, -1)
Try
Application.Run()
Catch ex As Exception
Finally
t.Dispose()
End Try
End Sub
Sub Click(ByVal sender As Object, ByVal e As EventArgs)
Application.Exit()
End Sub
End Module

поуберайте ненужные референсы, а форму для таймера вовсе необязательно
создавать, вообщето есть три вида таймеров...



Ответить

Страница: 1 |

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



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