Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Start 20 Threads, stop them all after 10 seconds

Reply
Thread Tools

Start 20 Threads, stop them all after 10 seconds

 
 
Mark B
Guest
Posts: n/a
 
      06-18-2005
Hi

I was wondering if someone could help me with the syntax for some VB.Net
ASPX code to:

- Start 20 threads
- End all threads after the sooner of 10 seconds or if all of the threads
themselves have finished.

BTW, each thread checks an email address for validity with www.aspnetmx.com.
If it is taking too long (e.g. > 10 seconds) I just want to look at the
results for the threads that have finished.

TIA
Mark





 
Reply With Quote
 
 
 
 
Cor Ligthert
Guest
Posts: n/a
 
      06-18-2005
Mark,

The most simple way is to set them first in an array and than to abort them
using a timer in your main program. (I doubt if it really will work.)

As I understand it well, does this mean that if you have 100 sessions
active, that than you have 2000 threads active in your system.

Now I see even less purpose of your threading. (Probably your processor time
is eaten by the processing of those threads)

However just my thought of course.

Cor


 
Reply With Quote
 
 
 
 
m.posseth
Guest
Posts: n/a
 
      06-18-2005
well in my opinion a asynchrone started dellegate would be a much cleaner
solution in this situation
just my 2 cents

Michel Posseth [MCP]


"Mark B" <(E-Mail Removed)> schreef in bericht
news:(E-Mail Removed)...
> Hi
>
> I was wondering if someone could help me with the syntax for some VB.Net
> ASPX code to:
>
> - Start 20 threads
> - End all threads after the sooner of 10 seconds or if all of the threads
> themselves have finished.
>
> BTW, each thread checks an email address for validity with
> www.aspnetmx.com.
> If it is taking too long (e.g. > 10 seconds) I just want to look at the
> results for the threads that have finished.
>
> TIA
> Mark
>
>
>
>
>



 
Reply With Quote
 
Mark B
Guest
Posts: n/a
 
      06-20-2005
Thanks. OK then, here's the code I could use:

'********CODE START***************
Dim intResult(20) as Integer = 1
Dim i as Integer
'intResult(i) 1 = Not Finished, 2 = True , 3 =False

For i = 1 To 20

'*******Start thread (i) here
If Mx.Validate(Session("Email"+Format$(i,"00")))=True Then
'This tests the particular email address
intResult(i)= 2
Else
intResult(i)= 3
End If
' *********End thread (i)i here

Next i

'********CODE END***************


Can someone help me with the threading syntax I should use above where it
says:

'*******Start thread i here
and
' *********End thread i here

and also the main engine code to shut down the threads after 10 seconds.
Then the 20 session variables can be inspected to see which ones passed,
failed and timed-out.


TIA
Mark

P.S. "As I understand it well, does this mean that if you have 100 sessions
active, that than you have 2000 threads active in your system." True, but
the threads are only active for 10 seconds per session. We can see how it
goes.




"Cor Ligthert" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Mark,
>
> The most simple way is to set them first in an array and than to abort

them
> using a timer in your main program. (I doubt if it really will work.)
>
> As I understand it well, does this mean that if you have 100 sessions
> active, that than you have 2000 threads active in your system.
>
> Now I see even less purpose of your threading. (Probably your processor

time
> is eaten by the processing of those threads)
>
> However just my thought of course.
>
> Cor
>
>



 
Reply With Quote
 
Jay B. Harlow [MVP - Outlook]
Guest
Posts: n/a
 
      06-20-2005
Mark,
In addition to the other comments:

Directly creating threads can be costly, rather then use New Thread, I would
recommend using either the ThreadPool, creating your own thread pool, or
using an async delegate.

The following MSDN Magazine article shows one method of creating a timed
method.

http://msdn.microsoft.com/msdnmag/is...s/default.aspx


Depending on how you call www.aspnetmx.com, for example if its a Web Service
wouldn't it be easier to simply set the WebClientProtocol.Timeout property
to your timeout amount (10 seconds)?

http://msdn.microsoft.com/library/de...meouttopic.asp

Something like:

'********CODE START***************

' set the method timeout on the proxy to 10 seconds
Mx.Timeout = CInt(TimeSpan.FromSeconds(10).TotalMilliseconds)


Dim intResult(20) as Integer = 1
Dim i as Integer
'intResult(i) 1 = Not Finished, 2 = True , 3 =False

For i = 1 To 20

'*******Start thread (i) here
If Mx.Validate(Session("Email"+Format$(i,"00")))=True Then
'This tests the particular email address
intResult(i)= 2
Else
intResult(i)= 3
End If
' *********End thread (i)i here

Next i

'********CODE END***************

Also, depending on how may total requests I had coming in, I would consider
doing these 20 outgoing requests asynchronously.

Something like (syntax checked only):

Mx.Timeout = CInt(TimeSpan.FromSeconds(10).TotalMilliseconds)

Dim intResults(20 - 1) As Integer

Dim results(20 - 1) As IAsyncResult

' Queue up all the requests
For index As Integer = 0 To 20 - 1

intResults(index) = 1
results(index) =
Mx.BeginValidate(Session("Email"+Format$(i,"00)), nothing, nothing)

Next index

' wait for each request to finish
For index As Integer = 0 To 20 - 1
If Mx.EndValidate(results(index)) Then
'This tests the particular email address
intResults(index)= 2
Else
intResults(index)= 3
End If
Next

NOTE: You may need the Mx.EndValidate in a Try/Catch as the Timeout will
cause an exception to be raised...

The advantage of using BeginValidate is that all 20 validates are executing
concurrently...

Hope this helps
Jay

"Mark B" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
| Hi
|
| I was wondering if someone could help me with the syntax for some VB.Net
| ASPX code to:
|
| - Start 20 threads
| - End all threads after the sooner of 10 seconds or if all of the threads
| themselves have finished.
|
| BTW, each thread checks an email address for validity with
www.aspnetmx.com.
| If it is taking too long (e.g. > 10 seconds) I just want to look at the
| results for the threads that have finished.
|
| TIA
| Mark
|
|
|
|
|



 
Reply With Quote
 
Mark B
Guest
Posts: n/a
 
      06-21-2005
Thanks very much.

I haven't really programmed much in VB.Net before just VBA.

I couldn't find the method "BeginValidate" or "EndValidate" in the ASPNetMX
documentation at http://www.aspnetmx.com/help/default.htm. Where does it
come from?

Also, excuse my .Net ignorance but does "asynchronously" mean at the same
time?

And, is "For index As Integer = 0 To 20 - 1" the same as:

Dim index as Integer
For index = 0 To 19



"Jay B. Harlow [MVP - Outlook]" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Mark,
> In addition to the other comments:
>
> Directly creating threads can be costly, rather then use New Thread, I

would
> recommend using either the ThreadPool, creating your own thread pool, or
> using an async delegate.
>
> The following MSDN Magazine article shows one method of creating a timed
> method.
>
> http://msdn.microsoft.com/msdnmag/is...s/default.aspx
>
>
> Depending on how you call www.aspnetmx.com, for example if its a Web

Service
> wouldn't it be easier to simply set the WebClientProtocol.Timeout property
> to your timeout amount (10 seconds)?
>
>

http://msdn.microsoft.com/library/de...meouttopic.asp
>
> Something like:
>
> '********CODE START***************
>
> ' set the method timeout on the proxy to 10 seconds
> Mx.Timeout = CInt(TimeSpan.FromSeconds(10).TotalMilliseconds)
>
>
> Dim intResult(20) as Integer = 1
> Dim i as Integer
> 'intResult(i) 1 = Not Finished, 2 = True , 3 =False
>
> For i = 1 To 20
>
> '*******Start thread (i) here
> If Mx.Validate(Session("Email"+Format$(i,"00")))=True Then
> 'This tests the particular email address
> intResult(i)= 2
> Else
> intResult(i)= 3
> End If
> ' *********End thread (i)i here
>
> Next i
>
> '********CODE END***************
>
> Also, depending on how may total requests I had coming in, I would

consider
> doing these 20 outgoing requests asynchronously.
>
> Something like (syntax checked only):
>
> Mx.Timeout = CInt(TimeSpan.FromSeconds(10).TotalMilliseconds)
>
> Dim intResults(20 - 1) As Integer
>
> Dim results(20 - 1) As IAsyncResult
>
> ' Queue up all the requests
> For index As Integer = 0 To 20 - 1
>
> intResults(index) = 1
> results(index) =
> Mx.BeginValidate(Session("Email"+Format$(i,"00)), nothing, nothing)
>
> Next index
>
> ' wait for each request to finish
> For index As Integer = 0 To 20 - 1
> If Mx.EndValidate(results(index)) Then
> 'This tests the particular email address
> intResults(index)= 2
> Else
> intResults(index)= 3
> End If
> Next
>
> NOTE: You may need the Mx.EndValidate in a Try/Catch as the Timeout will
> cause an exception to be raised...
>
> The advantage of using BeginValidate is that all 20 validates are

executing
> concurrently...
>
> Hope this helps
> Jay
>
> "Mark B" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> | Hi
> |
> | I was wondering if someone could help me with the syntax for some VB.Net
> | ASPX code to:
> |
> | - Start 20 threads
> | - End all threads after the sooner of 10 seconds or if all of the

threads
> | themselves have finished.
> |
> | BTW, each thread checks an email address for validity with
> www.aspnetmx.com.
> | If it is taking too long (e.g. > 10 seconds) I just want to look at the
> | results for the threads that have finished.
> |
> | TIA
> | Mark
> |
> |
> |
> |
> |
>
>
>



 
Reply With Quote
 
Kevin Spencer
Guest
Posts: n/a
 
      06-21-2005
Did you read my reply from last week? I spent a long time covering this. I
recommended that you do not use multiple threads. Perhaps that isn't what
you wanted to hear, but I gave you quite a few good reasons not to.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Ambiguity has a certain quality to it.

"Mark B" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Thanks very much.
>
> I haven't really programmed much in VB.Net before just VBA.
>
> I couldn't find the method "BeginValidate" or "EndValidate" in the
> ASPNetMX
> documentation at http://www.aspnetmx.com/help/default.htm. Where does it
> come from?
>
> Also, excuse my .Net ignorance but does "asynchronously" mean at the same
> time?
>
> And, is "For index As Integer = 0 To 20 - 1" the same as:
>
> Dim index as Integer
> For index = 0 To 19
>
>
>
> "Jay B. Harlow [MVP - Outlook]" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> Mark,
>> In addition to the other comments:
>>
>> Directly creating threads can be costly, rather then use New Thread, I

> would
>> recommend using either the ThreadPool, creating your own thread pool, or
>> using an async delegate.
>>
>> The following MSDN Magazine article shows one method of creating a timed
>> method.
>>
>> http://msdn.microsoft.com/msdnmag/is...s/default.aspx
>>
>>
>> Depending on how you call www.aspnetmx.com, for example if its a Web

> Service
>> wouldn't it be easier to simply set the WebClientProtocol.Timeout
>> property
>> to your timeout amount (10 seconds)?
>>
>>

> http://msdn.microsoft.com/library/de...meouttopic.asp
>>
>> Something like:
>>
>> '********CODE START***************
>>
>> ' set the method timeout on the proxy to 10 seconds
>> Mx.Timeout = CInt(TimeSpan.FromSeconds(10).TotalMilliseconds)
>>
>>
>> Dim intResult(20) as Integer = 1
>> Dim i as Integer
>> 'intResult(i) 1 = Not Finished, 2 = True , 3 =False
>>
>> For i = 1 To 20
>>
>> '*******Start thread (i) here
>> If Mx.Validate(Session("Email"+Format$(i,"00")))=True Then
>> 'This tests the particular email address
>> intResult(i)= 2
>> Else
>> intResult(i)= 3
>> End If
>> ' *********End thread (i)i here
>>
>> Next i
>>
>> '********CODE END***************
>>
>> Also, depending on how may total requests I had coming in, I would

> consider
>> doing these 20 outgoing requests asynchronously.
>>
>> Something like (syntax checked only):
>>
>> Mx.Timeout = CInt(TimeSpan.FromSeconds(10).TotalMilliseconds)
>>
>> Dim intResults(20 - 1) As Integer
>>
>> Dim results(20 - 1) As IAsyncResult
>>
>> ' Queue up all the requests
>> For index As Integer = 0 To 20 - 1
>>
>> intResults(index) = 1
>> results(index) =
>> Mx.BeginValidate(Session("Email"+Format$(i,"00)), nothing, nothing)
>>
>> Next index
>>
>> ' wait for each request to finish
>> For index As Integer = 0 To 20 - 1
>> If Mx.EndValidate(results(index)) Then
>> 'This tests the particular email address
>> intResults(index)= 2
>> Else
>> intResults(index)= 3
>> End If
>> Next
>>
>> NOTE: You may need the Mx.EndValidate in a Try/Catch as the Timeout will
>> cause an exception to be raised...
>>
>> The advantage of using BeginValidate is that all 20 validates are

> executing
>> concurrently...
>>
>> Hope this helps
>> Jay
>>
>> "Mark B" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>> | Hi
>> |
>> | I was wondering if someone could help me with the syntax for some
>> VB.Net
>> | ASPX code to:
>> |
>> | - Start 20 threads
>> | - End all threads after the sooner of 10 seconds or if all of the

> threads
>> | themselves have finished.
>> |
>> | BTW, each thread checks an email address for validity with
>> www.aspnetmx.com.
>> | If it is taking too long (e.g. > 10 seconds) I just want to look at the
>> | results for the threads that have finished.
>> |
>> | TIA
>> | Mark
>> |
>> |
>> |
>> |
>> |
>>
>>
>>

>
>



 
Reply With Quote
 
Jay B. Harlow [MVP - Outlook]
Guest
Posts: n/a
 
      06-21-2005
Mark,
| I couldn't find the method "BeginValidate" or "EndValidate" in the
ASPNetMX
| documentation at http://www.aspnetmx.com/help/default.htm. Where does it
| come from?
"BeginValidate" or "EndValidate" are based on ASPNetMX being a Web Service,
ASPNetMX is not a web service, ergo they don't exist per se. You should be
able to use an asynchronous delegate with ASPNetMX.

http://msdn.microsoft.com/library/de...sdelegates.asp

| Also, excuse my .Net ignorance but does "asynchronously" mean at the same
| time?
Yes. For details on asynchronous programming see:

http://msdn.microsoft.com/library/de...rogramming.asp


| And, is "For index As Integer = 0 To 20 - 1" the same as:
|
| Dim index as Integer
| For index = 0 To 19
Yes

| I haven't really programmed much in VB.Net before just VBA.

Looking at http://www.aspnetmx.com/help/default.htm, I would consider using
ValidateQty instead of Validate, as ValidateQty does a list of addresses.
Then I would not worry about getting multi-threading & asynchronous
programming to work. As Kevin suggests multi-threading is something to
consider not using, as it is a very advanced topic that is easy to make
things worse then better, although I have not specifically read Kevin's
response... Asynchronous programming ("BeginValidate" or "EndValidate") are
generally easier, however even then you need to be very careful as its still
multi-threaded programming.

Hope this helps
Jay

"Mark B" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
| Thanks very much.
|
| I haven't really programmed much in VB.Net before just VBA.
|
| I couldn't find the method "BeginValidate" or "EndValidate" in the
ASPNetMX
| documentation at http://www.aspnetmx.com/help/default.htm. Where does it
| come from?
|
| Also, excuse my .Net ignorance but does "asynchronously" mean at the same
| time?
|
| And, is "For index As Integer = 0 To 20 - 1" the same as:
|
| Dim index as Integer
| For index = 0 To 19
|
|
|
| "Jay B. Harlow [MVP - Outlook]" <(E-Mail Removed)> wrote in message
| news:(E-Mail Removed)...
| > Mark,
| > In addition to the other comments:
| >
| > Directly creating threads can be costly, rather then use New Thread, I
| would
| > recommend using either the ThreadPool, creating your own thread pool, or
| > using an async delegate.
| >
| > The following MSDN Magazine article shows one method of creating a timed
| > method.
| >
| > http://msdn.microsoft.com/msdnmag/is...s/default.aspx
| >
| >
| > Depending on how you call www.aspnetmx.com, for example if its a Web
| Service
| > wouldn't it be easier to simply set the WebClientProtocol.Timeout
property
| > to your timeout amount (10 seconds)?
| >
| >
|
http://msdn.microsoft.com/library/de...meouttopic.asp
| >
| > Something like:
| >
| > '********CODE START***************
| >
| > ' set the method timeout on the proxy to 10 seconds
| > Mx.Timeout = CInt(TimeSpan.FromSeconds(10).TotalMilliseconds)
| >
| >
| > Dim intResult(20) as Integer = 1
| > Dim i as Integer
| > 'intResult(i) 1 = Not Finished, 2 = True , 3 =False
| >
| > For i = 1 To 20
| >
| > '*******Start thread (i) here
| > If Mx.Validate(Session("Email"+Format$(i,"00")))=True Then
| > 'This tests the particular email address
| > intResult(i)= 2
| > Else
| > intResult(i)= 3
| > End If
| > ' *********End thread (i)i here
| >
| > Next i
| >
| > '********CODE END***************
| >
| > Also, depending on how may total requests I had coming in, I would
| consider
| > doing these 20 outgoing requests asynchronously.
| >
| > Something like (syntax checked only):
| >
| > Mx.Timeout = CInt(TimeSpan.FromSeconds(10).TotalMilliseconds)
| >
| > Dim intResults(20 - 1) As Integer
| >
| > Dim results(20 - 1) As IAsyncResult
| >
| > ' Queue up all the requests
| > For index As Integer = 0 To 20 - 1
| >
| > intResults(index) = 1
| > results(index) =
| > Mx.BeginValidate(Session("Email"+Format$(i,"00)), nothing, nothing)
| >
| > Next index
| >
| > ' wait for each request to finish
| > For index As Integer = 0 To 20 - 1
| > If Mx.EndValidate(results(index)) Then
| > 'This tests the particular email address
| > intResults(index)= 2
| > Else
| > intResults(index)= 3
| > End If
| > Next
| >
| > NOTE: You may need the Mx.EndValidate in a Try/Catch as the Timeout will
| > cause an exception to be raised...
| >
| > The advantage of using BeginValidate is that all 20 validates are
| executing
| > concurrently...
| >
| > Hope this helps
| > Jay
| >
| > "Mark B" <(E-Mail Removed)> wrote in message
| > news:(E-Mail Removed)...
| > | Hi
| > |
| > | I was wondering if someone could help me with the syntax for some
VB.Net
| > | ASPX code to:
| > |
| > | - Start 20 threads
| > | - End all threads after the sooner of 10 seconds or if all of the
| threads
| > | themselves have finished.
| > |
| > | BTW, each thread checks an email address for validity with
| > www.aspnetmx.com.
| > | If it is taking too long (e.g. > 10 seconds) I just want to look at
the
| > | results for the threads that have finished.
| > |
| > | TIA
| > | Mark
| > |
| > |
| > |
| > |
| > |
| >
| >
| >
|
|


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to convert Seconds to X Hours Y Minutes Z Seconds? 00_CP_D12 ASP .Net 3 02-22-2008 10:37 AM
convert seconds to hours:minutes:seconds `p Ruby 7 12-14-2005 03:32 PM
1. Ruby result: 101 seconds , 2. Java result:9.8 seconds, 3. Perl result:62 seconds Michael Tan Ruby 32 07-21-2005 03:23 PM
Convert seconds to minutes and seconds tshad ASP .Net 7 03-11-2005 11:27 PM
Converting seconds to (Days, Hours, Minutes, seconds) Stu C Programming 7 03-07-2005 08:44 AM



Advertisments