{"id":21618,"date":"2024-03-15T22:21:31","date_gmt":"2024-03-15T22:21:31","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/"},"modified":"2024-03-21T20:55:01","modified_gmt":"2024-03-21T20:55:01","slug":"implementing-background-tasks-in-net-core-using-the-generic-host","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/","title":{"rendered":"Implementing background tasks in .NET Core using the Generic Host."},"content":{"rendered":"<p>In NET Core, you can use Generic Host to implement background tasks. Generic Host is a lightweight host introduced in .NET Core 3.0 that can be used to host background tasks or scheduled jobs in an application.<\/p>\n<p>Here is a simple example code demonstrating how to use Generic Host to implement background tasks.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">using<\/span> Microsoft.Extensions.DependencyInjection;\r\n<span class=\"hljs-keyword\">using<\/span> Microsoft.Extensions.Hosting;\r\n<span class=\"hljs-keyword\">using<\/span> System;\r\n<span class=\"hljs-keyword\">using<\/span> System.Threading;\r\n<span class=\"hljs-keyword\">using<\/span> System.Threading.Tasks;\r\n\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Program<\/span>\r\n{\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">async<\/span> Task <span class=\"hljs-title\">Main<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">string<\/span>[] args<\/span>)<\/span>\r\n    {\r\n        <span class=\"hljs-keyword\">await<\/span> CreateHostBuilder(args).RunConsoleAsync();\r\n    }\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> IHostBuilder <span class=\"hljs-title\">CreateHostBuilder<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">string<\/span>[] args<\/span>)<\/span> =&gt;\r\n        Host.CreateDefaultBuilder(args)\r\n            .ConfigureServices((hostContext, services) =&gt;\r\n            {\r\n                services.AddHostedService&lt;BackgroundService&gt;();\r\n            });\r\n}\r\n\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">BackgroundService<\/span> : <span class=\"hljs-title\">BackgroundService<\/span>\r\n{\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">async<\/span> Task <span class=\"hljs-title\">ExecuteAsync<\/span>(<span class=\"hljs-params\">CancellationToken stoppingToken<\/span>)<\/span>\r\n    {\r\n        <span class=\"hljs-keyword\">while<\/span> (!stoppingToken.IsCancellationRequested)\r\n        {\r\n            <span class=\"hljs-comment\">\/\/ \u6267\u884c\u540e\u53f0\u4efb\u52a1\u7684\u903b\u8f91<\/span>\r\n            Console.WriteLine(<span class=\"hljs-string\">\"Running background task...\"<\/span>);\r\n\r\n            <span class=\"hljs-comment\">\/\/ \u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4<\/span>\r\n            <span class=\"hljs-keyword\">await<\/span> Task.Delay(TimeSpan.FromSeconds(<span class=\"hljs-number\">10<\/span>), stoppingToken);\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the example above, we created a BackgroundService class that inherits from the BackgroundService base class, which provides an abstract method ExecuteAsync for executing the logic of background tasks. In the Program.cs file, we registered the BackgroundService service through the ConfigureServices method, and called the RunConsoleAsync method in the Main method to start the background task.<\/p>\n<p>It is important to note that the ExecuteAsync method in BackgroundService is an infinite loop that executes the logic of background tasks in each iteration. You can check if the background task needs to be canceled by calling the stoppingToken.IsCancellationRequested method, and use Task.Delay method to wait for a period of time.<\/p>\n<p>By using the above code, we can implement simple background tasks in .NET Core. For more complex functionality, we can further extend the BackgroundService class and override the necessary methods according to our needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In NET Core, you can use Generic Host to implement background tasks. Generic Host is a lightweight host introduced in .NET Core 3.0 that can be used to host background tasks or scheduled jobs in an application. Here is a simple example code demonstrating how to use Generic Host to implement background tasks. using Microsoft.Extensions.DependencyInjection; [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-21618","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Implementing background tasks in .NET Core using the Generic Host. - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Implementing background tasks in .NET Core using the Generic Host.\" \/>\n<meta property=\"og:description\" content=\"In NET Core, you can use Generic Host to implement background tasks. Generic Host is a lightweight host introduced in .NET Core 3.0 that can be used to host background tasks or scheduled jobs in an application. Here is a simple example code demonstrating how to use Generic Host to implement background tasks. using Microsoft.Extensions.DependencyInjection; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T22:21:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T20:55:01+00:00\" \/>\n<meta name=\"author\" content=\"Liam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Liam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/\"},\"author\":{\"name\":\"Liam\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\"},\"headline\":\"Implementing background tasks in .NET Core using the Generic Host.\",\"datePublished\":\"2024-03-15T22:21:31+00:00\",\"dateModified\":\"2024-03-21T20:55:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/\"},\"wordCount\":207,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/\",\"name\":\"Implementing background tasks in .NET Core using the Generic Host. - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T22:21:31+00:00\",\"dateModified\":\"2024-03-21T20:55:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Implementing background tasks in .NET Core using the Generic Host.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\",\"name\":\"Liam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"caption\":\"Liam\"},\"sameAs\":[\"http:\/\/Wilson\"],\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Implementing background tasks in .NET Core using the Generic Host. - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/","og_locale":"en_US","og_type":"article","og_title":"Implementing background tasks in .NET Core using the Generic Host.","og_description":"In NET Core, you can use Generic Host to implement background tasks. Generic Host is a lightweight host introduced in .NET Core 3.0 that can be used to host background tasks or scheduled jobs in an application. Here is a simple example code demonstrating how to use Generic Host to implement background tasks. using Microsoft.Extensions.DependencyInjection; [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T22:21:31+00:00","article_modified_time":"2024-03-21T20:55:01+00:00","author":"Liam","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Liam","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/"},"author":{"name":"Liam","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671"},"headline":"Implementing background tasks in .NET Core using the Generic Host.","datePublished":"2024-03-15T22:21:31+00:00","dateModified":"2024-03-21T20:55:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/"},"wordCount":207,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/","url":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/","name":"Implementing background tasks in .NET Core using the Generic Host. - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T22:21:31+00:00","dateModified":"2024-03-21T20:55:01+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/implementing-background-tasks-in-net-core-using-the-generic-host\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Implementing background tasks in .NET Core using the Generic Host."}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671","name":"Liam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","caption":"Liam"},"sameAs":["http:\/\/Wilson"],"url":"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/21618","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=21618"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/21618\/revisions"}],"predecessor-version":[{"id":55489,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/21618\/revisions\/55489"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=21618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=21618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=21618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}