Link to home
Start Free TrialLog in
Avatar of Philippe Renaud
Philippe RenaudFlag for Canada

asked on

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 ?
Avatar of Éric Moreau
Éric Moreau
Flag of Canada image

Avatar of Philippe Renaud

ASKER

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 ?
ASKER CERTIFIED SOLUTION
Avatar of Éric Moreau
Éric Moreau
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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.
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...
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?
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 ?
ok i found my problem
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
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
For you Kaufmed and Eric in case you know an answer :

https://www.experts-exchange.com/questions/28985931/Speeding-up-a-Loop.html