Home
    
    
        C# HttpClient and Async Super Basic Example
    
    Blog Date 28 September 2023
Still not gotten a full grasp of Async as yet. BUT. NOTE!! The page directive needs "Async="true""
The Page
<%@ Page Title="" Async="true" Language="C#" AutoEventWireup="true" CodeBehind="Async.aspx.cs" Inherits="abcd.Async" %>
<html>
<head>
    <title>Async
    </title>
</head>
<body>
    <form runat="server">
        <h1>Async</h1>
        <asp:TextBox ID="MyShow" TextMode="MultiLine" Width="500px" Height="500px" runat="server" />
    </form>
</body>
</html>
The Code Behind
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.UI;
namespace abcd
{
    public partial class Async : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterAsyncTask(new PageAsyncTask(MyTask));
            MyTask();
            MyShow.Text = "OK"; //This will NOT be shown as... the "MyTask()" above
                                //will run in it's own sweet time and OVERWRITE the OK
        }
        HttpClient client = new HttpClient();   //ALWAYS put this outside the method. Why?
                                                //Not sure but everyone says if it's inside it creates
                                                //multiple instances of the client and eats resources
                                                //I think this "shares" the client.
        async Task MyTask()
        {
            using (HttpResponseMessage response = await client.GetAsync("https://bbc.co.uk"))
            {
                response.EnsureSuccessStatusCode();
                MyShow.Text = await response.Content.ReadAsStringAsync();
                        //try adding "+=" rather than "=" above. As this is run in it's own
                        //time you'll now see the "OK" that was added in Page_Load
                        //then the BBC's HTML
            }
        }
    }
}
    
    Reader's Comments
    
    
    
Name
Comment
Add a RELEVANT link (not required)
Upload an image (not required)
Uploading...
    Home