I'd like to create a subsystem in my asp.net application that is responsible
for emails that need to be send out based upon certain events so that the
main request/response threads aren't responsible for the communication with
the smtp server, etc. I don't want to create a seperate thread for every
instance in which a notification must be sent...I'd rather record the
necessary information to the db or web cache and let the subsystem be
responsible for it from there. What is the best way to go about
this....should I just launch another thread upon application start? What do
I do w/ the thread when it has no responsibility. Should it just loop, look
for work and do work/sleep for a few seconds, etc?
I'm sure someone has done something like this before or come across some
article, etc...I appreciate any comments.
~Paul 11 1617
I suggest you look into using a Windows Service to handle such background
tasks.
Here's more information on Windows Services: http://msdn.microsoft.com/library/de...owsService.asp
--
I hope this helps,
Steve C. Orr, MCSD, MVP http://Steve.Orr.net
"PJ" <pj***@hotmail.com> wrote in message
news:uE*************@TK2MSFTNGP09.phx.gbl... I'd like to create a subsystem in my asp.net application that is responsible for emails that need to be send out based upon certain events so that the main request/response threads aren't responsible for the communication with the smtp server, etc. I don't want to create a seperate thread for every instance in which a notification must be sent...I'd rather record the necessary information to the db or web cache and let the subsystem be responsible for it from there. What is the best way to go about this....should I just launch another thread upon application start? What do I do w/ the thread when it has no responsibility. Should it just loop, look for work and do work/sleep for a few seconds, etc?
I'm sure someone has done something like this before or come across some article, etc...I appreciate any comments.
~Paul
"PJ" <pj***@hotmail.com> wrote in message
news:uE*************@TK2MSFTNGP09.phx.gbl... I'd like to create a subsystem in my asp.net application that is
responsible for emails that need to be send out based upon certain events so that the main request/response threads aren't responsible for the communication
with the smtp server, etc. I don't want to create a seperate thread for every instance in which a notification must be sent...I'd rather record the necessary information to the db or web cache and let the subsystem be responsible for it from there. What is the best way to go about this....should I just launch another thread upon application start? What
do I do w/ the thread when it has no responsibility. Should it just loop,
look for work and do work/sleep for a few seconds, etc?
I'm sure someone has done something like this before or come across some article, etc...I appreciate any comments.
Here's a type called SingleThreadWorkQueue for this kind of thing. When you
create a SingleThreadWorkQueue is creates a thread and a Queue. The thread
pulls items off the queue and then invokes a delegate (a function outside
the type), and passes it whatever was on the queue.
So you would just bundle up the information to send an email into an object,
and pass it to SingleThreadWorkQueue.AddWork. The worker thread would then
dequeue the work and invoke your work function.
Like this:
--- somewhere in global scope ----
public shared OutgoingEmailQueue as new SingleThreadWorkQueue(addressOf
SendAnEmail)
public shared sub SendAnEmail(work as Object)
dim em as MyEmailInfo = directcast(work,MyEmailInfo)
--send the email
end sub
---- anywhere you want to generate an email, somehting like ----
MyGlobal.OutgoingEmailQueue.AddWork(new EmailObject("jo*@hotmail.com","helo,
joe"))
Private Class SingleThreadWorkQueue
Private workQueue As Queue = Queue.Synchronized(New Queue())
Private wp As DoWork
Private wt As Thread
Public Delegate Sub DoWork(ByVal w As Object)
Public Event ExceptionOccured(ByVal e As Exception)
Public Sub New(ByVal WorkProc As DoWork)
wp = WorkProc
wt = New Thread(AddressOf workerThreadProc)
wt.IsBackground = True
wt.Name = "worker thread for " & wp.Target.GetType.Name & "." &
wp.Method.Name
wt.Start()
End Sub
Private Sub workerThreadProc()
SyncLock workQueue
Do
Monitor.Wait(workQueue, 5000)
Do While workQueue.Count > 0
Try
Dim w As Object = workQueue.Dequeue
wp.Invoke(w)
Catch ex As Exception
RaiseEvent ExceptionOccured(ex)
End Try
Loop
Loop
End SyncLock
End Sub
Public Sub AddWork(ByVal work As Object)
workQueue.Enqueue(work)
If Monitor.TryEnter(workQueue) Then
Monitor.Pulse(workQueue)
Monitor.Exit(workQueue)
End If
End Sub
End Class
This could work in some cases, but if the thread is especially long running
I'm afraid it could time out once the initiating thread (the ASP.NET page)
is long gone. A windows service should never time out, so it might be a bit
more reliable. A Queue could still be used to store up the list of to-dos.
--
I hope this helps,
Steve C. Orr, MCSD, MVP http://Steve.Orr.net
"David Browne" <davidbaxterbrowne no potted me**@hotmail.com> wrote in
message news:uM**************@TK2MSFTNGP10.phx.gbl... "PJ" <pj***@hotmail.com> wrote in message news:uE*************@TK2MSFTNGP09.phx.gbl... I'd like to create a subsystem in my asp.net application that is responsible for emails that need to be send out based upon certain events so that the main request/response threads aren't responsible for the communication with the smtp server, etc. I don't want to create a seperate thread for every instance in which a notification must be sent...I'd rather record the necessary information to the db or web cache and let the subsystem be responsible for it from there. What is the best way to go about this....should I just launch another thread upon application start? What do I do w/ the thread when it has no responsibility. Should it just loop, look for work and do work/sleep for a few seconds, etc?
I'm sure someone has done something like this before or come across some article, etc...I appreciate any comments.
Here's a type called SingleThreadWorkQueue for this kind of thing. When you create a SingleThreadWorkQueue is creates a thread and a Queue. The thread pulls items off the queue and then invokes a delegate (a function outside the type), and passes it whatever was on the queue.
So you would just bundle up the information to send an email into an object, and pass it to SingleThreadWorkQueue.AddWork. The worker thread would then dequeue the work and invoke your work function.
Like this:
--- somewhere in global scope ---- public shared OutgoingEmailQueue as new SingleThreadWorkQueue(addressOf SendAnEmail)
public shared sub SendAnEmail(work as Object) dim em as MyEmailInfo = directcast(work,MyEmailInfo) --send the email end sub
---- anywhere you want to generate an email, somehting like ---- MyGlobal.OutgoingEmailQueue.AddWork(new EmailObject("jo*@hotmail.com","helo, joe"))
Private Class SingleThreadWorkQueue Private workQueue As Queue = Queue.Synchronized(New Queue()) Private wp As DoWork Private wt As Thread Public Delegate Sub DoWork(ByVal w As Object) Public Event ExceptionOccured(ByVal e As Exception)
Public Sub New(ByVal WorkProc As DoWork) wp = WorkProc wt = New Thread(AddressOf workerThreadProc) wt.IsBackground = True wt.Name = "worker thread for " & wp.Target.GetType.Name & "." & wp.Method.Name wt.Start() End Sub
Private Sub workerThreadProc() SyncLock workQueue Do Monitor.Wait(workQueue, 5000) Do While workQueue.Count > 0 Try Dim w As Object = workQueue.Dequeue wp.Invoke(w) Catch ex As Exception RaiseEvent ExceptionOccured(ex) End Try Loop Loop End SyncLock End Sub Public Sub AddWork(ByVal work As Object) workQueue.Enqueue(work) If Monitor.TryEnter(workQueue) Then Monitor.Pulse(workQueue) Monitor.Exit(workQueue) End If End Sub
End Class
"Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message
news:uL**************@tk2msftngp13.phx.gbl... This could work in some cases, but if the thread is especially long
running I'm afraid it could time out once the initiating thread (the ASP.NET page) is long gone. A windows service should never time out, so it might be a
bit more reliable. A Queue could still be used to store up the list of
to-dos.
You wouldn't want to run especially long running things this way. Just
things that take too long to do while your user is waiting. Sending an
email is a perfect use because it can take about a second to do all the SMTP
stuff, and you just don't need to add that to your user's wait time. I also
use this mechanism to write to my log file. Multiple threads can add log
entries very quickly and the worker thread writes them all out to disk.
Things you might be tempted to use the ThreadPool.QueueUserWorkItem for if
that weren't frowned upon in asp.net, and things that require access from a
single thread, like a file.
A service will work, but for something like this I think it's not really
worth the hastle of administering and configuring the interprocess
communication.
David
This is good stuff. Excuse my ignorance, but why is it necessary to use a
delegate? Why can't the wrokerThreadProc just call SendAnEmail directly?
Thanks~
Paul
"David Browne" <davidbaxterbrowne no potted me**@hotmail.com> wrote in
message news:uM**************@TK2MSFTNGP10.phx.gbl... "PJ" <pj***@hotmail.com> wrote in message news:uE*************@TK2MSFTNGP09.phx.gbl... I'd like to create a subsystem in my asp.net application that is responsible for emails that need to be send out based upon certain events so that
the main request/response threads aren't responsible for the communication with the smtp server, etc. I don't want to create a seperate thread for
every instance in which a notification must be sent...I'd rather record the necessary information to the db or web cache and let the subsystem be responsible for it from there. What is the best way to go about this....should I just launch another thread upon application start?
What do I do w/ the thread when it has no responsibility. Should it just loop, look for work and do work/sleep for a few seconds, etc?
I'm sure someone has done something like this before or come across some article, etc...I appreciate any comments.
Here's a type called SingleThreadWorkQueue for this kind of thing. When
you create a SingleThreadWorkQueue is creates a thread and a Queue. The
thread pulls items off the queue and then invokes a delegate (a function outside the type), and passes it whatever was on the queue.
So you would just bundle up the information to send an email into an
object, and pass it to SingleThreadWorkQueue.AddWork. The worker thread would
then dequeue the work and invoke your work function.
Like this:
--- somewhere in global scope ---- public shared OutgoingEmailQueue as new SingleThreadWorkQueue(addressOf SendAnEmail)
public shared sub SendAnEmail(work as Object) dim em as MyEmailInfo = directcast(work,MyEmailInfo) --send the email end sub
---- anywhere you want to generate an email, somehting like ---- MyGlobal.OutgoingEmailQueue.AddWork(new
EmailObject("jo*@hotmail.com","helo, joe"))
Private Class SingleThreadWorkQueue Private workQueue As Queue = Queue.Synchronized(New Queue()) Private wp As DoWork Private wt As Thread Public Delegate Sub DoWork(ByVal w As Object) Public Event ExceptionOccured(ByVal e As Exception)
Public Sub New(ByVal WorkProc As DoWork) wp = WorkProc wt = New Thread(AddressOf workerThreadProc) wt.IsBackground = True wt.Name = "worker thread for " & wp.Target.GetType.Name & "." & wp.Method.Name wt.Start() End Sub
Private Sub workerThreadProc() SyncLock workQueue Do Monitor.Wait(workQueue, 5000) Do While workQueue.Count > 0 Try Dim w As Object = workQueue.Dequeue wp.Invoke(w) Catch ex As Exception RaiseEvent ExceptionOccured(ex) End Try Loop Loop End SyncLock End Sub Public Sub AddWork(ByVal work As Object) workQueue.Enqueue(work) If Monitor.TryEnter(workQueue) Then Monitor.Pulse(workQueue) Monitor.Exit(workQueue) End If End Sub
End Class
I'm curious about this as well. What exactly would time out? I assume
"time out" means certain object instances would be recycled? If the page
instance is recycled, how will it affect a worker thread if the thread is
not referencing any of the page's members? Will an object created in the
page, i.e. an EmailObject, that's passed to the queue get recycyled if the
page instance does?
Thanks for the clarification?
"David Browne" <davidbaxterbrowne no potted me**@hotmail.com> wrote in
message news:%2****************@TK2MSFTNGP15.phx.gbl... "Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message news:uL**************@tk2msftngp13.phx.gbl... This could work in some cases, but if the thread is especially long running I'm afraid it could time out once the initiating thread (the ASP.NET
page) is long gone. A windows service should never time out, so it might be a bit more reliable. A Queue could still be used to store up the list of to-dos.
You wouldn't want to run especially long running things this way. Just things that take too long to do while your user is waiting. Sending an email is a perfect use because it can take about a second to do all the
SMTP stuff, and you just don't need to add that to your user's wait time. I
also use this mechanism to write to my log file. Multiple threads can add log entries very quickly and the worker thread writes them all out to disk. Things you might be tempted to use the ThreadPool.QueueUserWorkItem for if that weren't frowned upon in asp.net, and things that require access from
a single thread, like a file.
A service will work, but for something like this I think it's not really worth the hastle of administering and configuring the interprocess communication.
David
Once a page has been rendered, any threads it created are eventually
orphaned and become potential targets for the .net garbage collector. How
often the garbage collector runs varies, depending on the load of your
server & such.
David is right that this won't likely be a problem if all the thread is
doing is sending a quick email to an exchange queue. Once the email has
been generated and is in the queue, it shouldn't matter if the thread that
created it gets recycled. However, if the code is only doing something
really quick like that then I'm not sure why you'd need a separate thread
for it anyway.
--
I hope this helps,
Steve C. Orr, MCSD, MVP http://Steve.Orr.net
"PJ" <pj***@hotmail.com> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl... I'm curious about this as well. What exactly would time out? I assume "time out" means certain object instances would be recycled? If the page instance is recycled, how will it affect a worker thread if the thread is not referencing any of the page's members? Will an object created in the page, i.e. an EmailObject, that's passed to the queue get recycyled if the page instance does?
Thanks for the clarification?
"David Browne" <davidbaxterbrowne no potted me**@hotmail.com> wrote in message news:%2****************@TK2MSFTNGP15.phx.gbl... "Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message news:uL**************@tk2msftngp13.phx.gbl... > This could work in some cases, but if the thread is especially long running > I'm afraid it could time out once the initiating thread (the ASP.NET page) > is long gone. A windows service should never time out, so it might be > a bit > more reliable. A Queue could still be used to store up the list of to-dos. >
You wouldn't want to run especially long running things this way. Just things that take too long to do while your user is waiting. Sending an email is a perfect use because it can take about a second to do all the
SMTP stuff, and you just don't need to add that to your user's wait time. I also use this mechanism to write to my log file. Multiple threads can add log entries very quickly and the worker thread writes them all out to disk. Things you might be tempted to use the ThreadPool.QueueUserWorkItem for if that weren't frowned upon in asp.net, and things that require access from a single thread, like a file.
A service will work, but for something like this I think it's not really worth the hastle of administering and configuring the interprocess communication.
David
There's a noticable difference when holding up the main response/request
thread at times. Also, some CDONTS errors seem to slip through any error
handling we have in place.
As far as orphaned threads...
What if I use a Singleton instance to create the thread? This singleton
could behave much like David's code snippet. The worker thread could be
created in the static constructor. Will the worker thread still be a target
for the garbage collector? I don't see how....I mean, if I add an item to
the web cache in a page instance, it doesn't get marked for garbage
collection, right?
Thanks for your time.
Public Class NotificationManager
Private Sub New()
End Sub
Shared Sub New()
'start thread with addressof Notify
End Sub
Private Shared ReadOnly _instance As NotificationManager = New
NotificationManager
Private _notificationList As Queue
Public Shared Function GetInstance() As NotificationManager
Return _instance
End Function
Public Sub AddWork(ByVal work as Object)
'add email data to queue
End Sub
Private Sub Notify
'loop, check queue, send email, etc
End Sub
End Class
'client code
NotificationManager.GetInstance().AddWork(myEmailO bject)
"Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message
news:OT*************@TK2MSFTNGP11.phx.gbl... Once a page has been rendered, any threads it created are eventually orphaned and become potential targets for the .net garbage collector. How often the garbage collector runs varies, depending on the load of your server & such.
David is right that this won't likely be a problem if all the thread is doing is sending a quick email to an exchange queue. Once the email has been generated and is in the queue, it shouldn't matter if the thread that created it gets recycled. However, if the code is only doing something really quick like that then I'm not sure why you'd need a separate thread for it anyway.
-- I hope this helps, Steve C. Orr, MCSD, MVP http://Steve.Orr.net
"PJ" <pj***@hotmail.com> wrote in message news:%2****************@TK2MSFTNGP11.phx.gbl... I'm curious about this as well. What exactly would time out? I assume "time out" means certain object instances would be recycled? If the
page instance is recycled, how will it affect a worker thread if the thread
is not referencing any of the page's members? Will an object created in
the page, i.e. an EmailObject, that's passed to the queue get recycyled if
the page instance does?
Thanks for the clarification?
"David Browne" <davidbaxterbrowne no potted me**@hotmail.com> wrote in message news:%2****************@TK2MSFTNGP15.phx.gbl... "Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message news:uL**************@tk2msftngp13.phx.gbl... > This could work in some cases, but if the thread is especially long running > I'm afraid it could time out once the initiating thread (the ASP.NET
page) > is long gone. A windows service should never time out, so it might
be > a bit > more reliable. A Queue could still be used to store up the list of to-dos. >
You wouldn't want to run especially long running things this way. Just things that take too long to do while your user is waiting. Sending an email is a perfect use because it can take about a second to do all the SMTP stuff, and you just don't need to add that to your user's wait time. I also use this mechanism to write to my log file. Multiple threads can add
log entries very quickly and the worker thread writes them all out to disk. Things you might be tempted to use the ThreadPool.QueueUserWorkItem for if that weren't frowned upon in asp.net, and things that require access
from a single thread, like a file.
A service will work, but for something like this I think it's not
really worth the hastle of administering and configuring the interprocess communication.
David
Also, if the Singleton instance holds a reference to the thread ( as a
private class member ), will that not prevent the thread from being garbage
collected?
"PJ" <pj***@hotmail.com> wrote in message
news:OD*************@TK2MSFTNGP11.phx.gbl... There's a noticable difference when holding up the main response/request thread at times. Also, some CDONTS errors seem to slip through any error handling we have in place.
As far as orphaned threads...
What if I use a Singleton instance to create the thread? This singleton could behave much like David's code snippet. The worker thread could be created in the static constructor. Will the worker thread still be a
target for the garbage collector? I don't see how....I mean, if I add an item to the web cache in a page instance, it doesn't get marked for garbage collection, right?
Thanks for your time.
Public Class NotificationManager Private Sub New() End Sub
Shared Sub New()
'start thread with addressof Notify End Sub
Private Shared ReadOnly _instance As NotificationManager = New NotificationManager Private _notificationList As Queue
Public Shared Function GetInstance() As NotificationManager Return _instance End Function
Public Sub AddWork(ByVal work as Object) 'add email data to queue End Sub
Private Sub Notify 'loop, check queue, send email, etc End Sub End Class
'client code NotificationManager.GetInstance().AddWork(myEmailO bject)
"Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message news:OT*************@TK2MSFTNGP11.phx.gbl... Once a page has been rendered, any threads it created are eventually orphaned and become potential targets for the .net garbage collector.
How often the garbage collector runs varies, depending on the load of your server & such.
David is right that this won't likely be a problem if all the thread is doing is sending a quick email to an exchange queue. Once the email has been generated and is in the queue, it shouldn't matter if the thread
that created it gets recycled. However, if the code is only doing something really quick like that then I'm not sure why you'd need a separate
thread for it anyway.
-- I hope this helps, Steve C. Orr, MCSD, MVP http://Steve.Orr.net
"PJ" <pj***@hotmail.com> wrote in message news:%2****************@TK2MSFTNGP11.phx.gbl... I'm curious about this as well. What exactly would time out? I
assume "time out" means certain object instances would be recycled? If the page instance is recycled, how will it affect a worker thread if the thread is not referencing any of the page's members? Will an object created in the page, i.e. an EmailObject, that's passed to the queue get recycyled if the page instance does?
Thanks for the clarification?
"David Browne" <davidbaxterbrowne no potted me**@hotmail.com> wrote in message news:%2****************@TK2MSFTNGP15.phx.gbl... > > "Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message > news:uL**************@tk2msftngp13.phx.gbl... > > This could work in some cases, but if the thread is especially long > running > > I'm afraid it could time out once the initiating thread (the
ASP.NET page) > > is long gone. A windows service should never time out, so it might be> > a > bit > > more reliable. A Queue could still be used to store up the list of > to-dos. > > > > You wouldn't want to run especially long running things this way.
Just> things that take too long to do while your user is waiting. Sending
an> email is a perfect use because it can take about a second to do all
the SMTP > stuff, and you just don't need to add that to your user's wait time.
I also > use this mechanism to write to my log file. Multiple threads can add log> entries very quickly and the worker thread writes them all out to
disk.> Things you might be tempted to use the ThreadPool.QueueUserWorkItem
for> if > that weren't frowned upon in asp.net, and things that require access from a > single thread, like a file. > > A service will work, but for something like this I think it's not really> worth the hastle of administering and configuring the interprocess > communication. > > David > >
"Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message
news:OT*************@TK2MSFTNGP11.phx.gbl... Once a page has been rendered, any threads it created are eventually orphaned and become potential targets for the .net garbage collector. How often the garbage collector runs varies, depending on the load of your server & such.
Nope. Threads are roots. A running thread and everything it references is
safe from the garbage collector. Even if this weren't the case, the static
reference to the thread would keep it reachable and keep it from being
collected.
David
"PJ" <pj***@hotmail.com> wrote in message
news:Oe**************@TK2MSFTNGP10.phx.gbl... Also, if the Singleton instance holds a reference to the thread ( as a private class member ), will that not prevent the thread from being
garbage collected?
The garbage collector never collects running threads. But you are right,
singletons are never collected because of the static (shared in VB)
reference. Classes are roots, just like threads are roots, and so any
object referenced by a class is not elegible for collection.
David This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: belgi |
last post by:
Hi,
I have a working windows service,it is looking for files
on the disk
and when some of the files are cupdated it calls an
executable. But it
takes a lot of time(about 10 minutes) to run the...
|
by: Serge |
last post by:
Hi,
I have some intensive code that is running on my main thread. I try to show
a status update on a 'status form'. The problem that i have is that because
it is running in the same thread the...
|
by: Keith |
last post by:
I'm in the same boat as the fellow who posted this message back in
August:
Title : Windows Service, How does one make a service "fail" properly?
Author : Ross Bennett
Group :...
|
by: belgiozen |
last post by:
Hi,
I have a working windows service,it is looking for files on the disk
and when some of the files are cupdated it calls an executable. But it
takes a lot of time(about 10 minutes) to run the...
|
by: Brian Keating EI9FXB |
last post by:
Hello all,
Wonder what approach is used for this problem.
I have a MDIApplication, the MDIClinets are to be in a seperate thread.
So I've done something like this,
// Create a new Show...
|
by: redneon |
last post by:
I've set up a seperate thread and put a timer in it but for some reason it's
tick event is never fired. This is what I have...
....
Thread timerThread = new Thread(new ThreadStart(startTimer));...
|
by: Markus Prediger |
last post by:
Hi NG,
I have an asp.net project that uses an vb6 com object for some
database-manipulation (I cannot rewrite it in .net, sorry, its not my
decision).
I want it to be instanciated seperately...
|
by: anders |
last post by:
I am writing a plugin for a piece of software in python, and I want to
start up a PyQt GUI in the plugin, without stalling the main thread
while the gui is running (later i will want to pass...
|
by: =?Utf-8?B?UG1hX1NoYW5l?= |
last post by:
I am wring asp webservices in managed c++ for IIS 5.1 runing on XP SP2. Even
though I set the aplication protection to High (Isolated), each service seems
to run in the same process. I wrote a...
|
by: DolphinDB |
last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation.
Take...
|
by: DolphinDB |
last post by:
Tired of spending countless mintues downsampling your data? Look no further!
In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: Vimpel783 |
last post by:
Hello!
Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
|
by: jfyes |
last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
|
by: PapaRatzi |
last post by:
Hello,
I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
|
by: Shællîpôpï 09 |
last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
|
by: af34tf |
last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
|
by: Faith0G |
last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
| |