Solved

VB.NET HttpWebRequest

Posted on 2016-11-23
12
88 Views
Last Modified: 2016-11-28
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 ?
0
Comment
Question by:PhilippeRenaud
  • 7
  • 3
  • 2
12 Comments
 
LVL 70

Expert Comment

by:Éric Moreau
ID: 41899979
0
 
LVL 1

Author Comment

by:PhilippeRenaud
ID: 41900524
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
 
LVL 1

Author Comment

by:PhilippeRenaud
ID: 41900529
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 70

Accepted Solution

by:
Éric Moreau earned 250 total points
ID: 41900552
I don't have a sample anywhere. Have you seen https://www.thomaslevesque.com/tag/timeout/
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 41900648
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
 
LVL 1

Author Comment

by:PhilippeRenaud
ID: 41901769
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
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 41901977
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
 
LVL 1

Author Comment

by:PhilippeRenaud
ID: 41901981
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
 
LVL 1

Author Comment

by:PhilippeRenaud
ID: 41902346
ok i found my problem
0
 
LVL 1

Author Comment

by:PhilippeRenaud
ID: 41902347
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
 
LVL 75

Assisted Solution

by:käµfm³d 👽
käµfm³d   👽 earned 250 total points
ID: 41902395
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
 
LVL 1

Author Comment

by:PhilippeRenaud
ID: 41904880
For you Kaufmed and Eric in case you know an answer :

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

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question