VB.NET HttpWebRequest

Hello EE,

In my vb.net page, I do something like this after creating my HttpWebRequest :

                            Using dataStream = requestLoginToPage1.GetRequestStream()
                                dataStream.Write(bytes1, 0, bytes1.Length)
                                dataStream.Close()
                            End Using

Open in new window


My question is, by doing that, I saw that this code slows down ALOT my script. If I remove it just for fun and run, it's extremely fast.
So, in other words, is there a way to use "getRequestStream" or similar and yet still have the speed or its the only way ?
LVL 1
PhilippeRenaudAsked:
Who is Participating?
 
Éric MoreauConnect With a Mentor Senior .Net ConsultantCommented:
I don't have a sample anywhere. Have you seen https://www.thomaslevesque.com/tag/timeout/
0
 
PhilippeRenaudAuthor Commented:
im trying to do with Await and lambda has i saw an example over the internet.

                            Using requestStream = New BinaryWriter(Function()
                                                                       Await requestLoginToPage1.GetRequestStreamAsync()
                                                                   End Function)
                                requestStream.Write(bytes1, 0, bytes1.Length)
                            End Using

Open in new window


but what am i missing, not sure to fix the error saying :

Lambda expression cannot be convert to IO.Stream,not a delegate type

how would you write it ?
0
Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

 
PhilippeRenaudAuthor Commented:
0
 
käµfm³d 👽Commented:
The error is because this is what you're passing to BinaryWriter:

Function()
    ...
End Function

...not this:

Await requestLoginToPage1.GetRequestStreamAsync()

You're passing the labmda itself, not it's reasult. Just await the GetRequestStreamAsync directly:

Using requestStream = New BinaryWriter(Await requestLoginToPage1.GetRequestStreamAsync())
    requestStream.Write(bytes1, 0, bytes1.Length)
End Using

Open in new window


GetRequestStreamAsync is already awaitable (because it returns Task(n)); you don't have to wrap it in a lambda.
0
 
PhilippeRenaudAuthor Commented:
Kaufmed, hold on so you mean, I only have to write what you wrote and should be fine ?

if I only do this :

                            Using requestStream = New BinaryWriter(Await requestLoginToPage1.GetRequestStreamAsync())
                                requestStream.Write(bytes1, 0, bytes1.Length)
                            End Using

Open in new window


I have an error saying :

Await can only be used within an async lambda blablabla...
0
 
käµfm³d 👽Commented:
OK, my mistake--kind of. You'd have to mark your outer method as Async (because you're using Await).

e.g.

Async Sub YourMethod()
    Using requestStream = New BinaryWriter(Await requestLoginToPage1.GetRequestStreamAsync())
        requestStream.Write(bytes1, 0, bytes1.Length)
    End Using
End Sub

Open in new window


But the implication of doing that is that you'd probably have to continue marking methods Async and Awaiting the results of such methods all the way up the chain. That's probably more work than you want for this.


What kind of project is this:  Console? Library? Win Forms? ASP.NET?
0
 
PhilippeRenaudAuthor Commented:
its vb.net  win forms ....

i tried liek you said and i have no errors now... but my only problem is that... This USING block is inside a list.Forach(Async Sub(z) ...

and for some reason, it does not loop, it stops after only 1 value.  (I have 36 values in my list) after index 0 it does not loop
but there are no error poping

you think its because of those Asyn calls ?
0
 
PhilippeRenaudAuthor Commented:
ok i found my problem
0
 
PhilippeRenaudAuthor Commented:
im going to give points but, i did not really see any speed up by using Async ...
its really slow I find....

like almost a second per item in my list.
i dont have enough knowledge to know if its normal
0
 
käµfm³d 👽Connect With a Mentor Commented:
Async isn't intended to make anything faster. It simply allows your code to not block on I/O work. While the system is doing I/O, there is nothing meaningful that the CPU can be doing. Async allows the CPU to continue processing other work while waiting for the I/O to complete. It's really intended for a more responsive UI.
0
 
PhilippeRenaudAuthor Commented:
For you Kaufmed and Eric in case you know an answer :

https://www.experts-exchange.com/questions/28985931/Speeding-up-a-Loop.html
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.