{"id":11716,"date":"2024-03-14T14:35:38","date_gmt":"2024-03-14T14:35:38","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/"},"modified":"2025-08-04T16:00:26","modified_gmt":"2025-08-04T16:00:26","slug":"how-to-use-invoke-in-c-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/","title":{"rendered":"C# Invoke: Thread-Safe UI Updates"},"content":{"rendered":"<p>Using the Invoke method in C# allows communication between different threads, typically used to update UI controls in the UI thread. Here is a simple example.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">partial<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Form1<\/span> : <span class=\"hljs-title\">Form<\/span>\r\n{\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">Form1<\/span>()<\/span>\r\n    {\r\n        InitializeComponent();\r\n    }\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">UpdateTextBox<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">string<\/span> text<\/span>)<\/span>\r\n    {\r\n        <span class=\"hljs-keyword\">if<\/span> (textBox1.InvokeRequired)\r\n        {\r\n            textBox1.Invoke(<span class=\"hljs-keyword\">new<\/span> MethodInvoker(<span class=\"hljs-built_in\">delegate<\/span> { textBox1.Text = text; }));\r\n        }\r\n        <span class=\"hljs-keyword\">else<\/span>\r\n        {\r\n            textBox1.Text = text;\r\n        }\r\n    }\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">button1_Click<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">object<\/span> sender, EventArgs e<\/span>)<\/span>\r\n    {\r\n        Thread t = <span class=\"hljs-keyword\">new<\/span> Thread(() =&gt;\r\n        {\r\n            UpdateTextBox(<span class=\"hljs-string\">\"Hello from another thread!\"<\/span>);\r\n        });\r\n\r\n        t.Start();\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the example above, we defined an UpdateTextBox method used to update the text of the textBox1 control. In the button1_Click event, we created a new thread and called the UpdateTextBox method within it. Since updating UI controls must be done in the UI thread, we use the Invoke method in the UpdateTextBox method to ensure that the text of textBox1 is updated in the UI thread.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Using the Invoke method in C# allows communication between different threads, typically used to update UI controls in the UI thread. Here is a simple example. public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void UpdateTextBox(string text) { if (textBox1.InvokeRequired) { textBox1.Invoke(new MethodInvoker(delegate { textBox1.Text = text; })); } else [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[274,15174,396,1542,14672],"class_list":["post-11716","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-c","tag-invoke-method","tag-thread-safety","tag-threading","tag-ui-programming"],"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>C# Invoke: Thread-Safe UI Updates - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Master C# Invoke method for thread-safe UI updates. Code examples &amp; best practices included.\" \/>\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\/how-to-use-invoke-in-c-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# Invoke: Thread-Safe UI Updates\" \/>\n<meta property=\"og:description\" content=\"Master C# Invoke method for thread-safe UI updates. Code examples &amp; best practices included.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/\" \/>\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-14T14:35:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-04T16:00:26+00:00\" \/>\n<meta name=\"author\" content=\"Jackson Davis\" \/>\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=\"Jackson Davis\" \/>\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\/how-to-use-invoke-in-c-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/\"},\"author\":{\"name\":\"Jackson Davis\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350\"},\"headline\":\"C# Invoke: Thread-Safe UI Updates\",\"datePublished\":\"2024-03-14T14:35:38+00:00\",\"dateModified\":\"2025-08-04T16:00:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/\"},\"wordCount\":99,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"c#\",\"Invoke Method\",\"thread safety\",\"Threading\",\"UI programming\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/\",\"name\":\"C# Invoke: Thread-Safe UI Updates - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T14:35:38+00:00\",\"dateModified\":\"2025-08-04T16:00:26+00:00\",\"description\":\"Master C# Invoke method for thread-safe UI updates. Code examples & best practices included.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Invoke: Thread-Safe UI Updates\"}]},{\"@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\/55a10b8b0457c35884c25677889ad350\",\"name\":\"Jackson Davis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g\",\"caption\":\"Jackson Davis\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/jacksondavis\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C# Invoke: Thread-Safe UI Updates - Blog - Silicon Cloud","description":"Master C# Invoke method for thread-safe UI updates. Code examples & best practices included.","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\/how-to-use-invoke-in-c-2\/","og_locale":"en_US","og_type":"article","og_title":"C# Invoke: Thread-Safe UI Updates","og_description":"Master C# Invoke method for thread-safe UI updates. Code examples & best practices included.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T14:35:38+00:00","article_modified_time":"2025-08-04T16:00:26+00:00","author":"Jackson Davis","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Jackson Davis","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/"},"author":{"name":"Jackson Davis","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350"},"headline":"C# Invoke: Thread-Safe UI Updates","datePublished":"2024-03-14T14:35:38+00:00","dateModified":"2025-08-04T16:00:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/"},"wordCount":99,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["c#","Invoke Method","thread safety","Threading","UI programming"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/","name":"C# Invoke: Thread-Safe UI Updates - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T14:35:38+00:00","dateModified":"2025-08-04T16:00:26+00:00","description":"Master C# Invoke method for thread-safe UI updates. Code examples & best practices included.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-invoke-in-c-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C# Invoke: Thread-Safe UI Updates"}]},{"@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\/55a10b8b0457c35884c25677889ad350","name":"Jackson Davis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g","caption":"Jackson Davis"},"url":"https:\/\/www.silicloud.com\/blog\/author\/jacksondavis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11716","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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=11716"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11716\/revisions"}],"predecessor-version":[{"id":155504,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11716\/revisions\/155504"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=11716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=11716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=11716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}