{"id":1771,"date":"2018-02-27T22:55:25","date_gmt":"2018-02-27T22:55:25","guid":{"rendered":"https:\/\/www.autoitconsulting.com\/site\/?page_id=1771"},"modified":"2025-07-26T14:30:49","modified_gmt":"2025-07-26T13:30:49","slug":"iresultobject-disposal","status":"publish","type":"page","link":"https:\/\/www.autoitconsulting.com\/site\/sccm-sdk\/fundamentals\/iresultobject-disposal\/","title":{"rendered":"IResultObject Disposal"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Overview<\/h2>\n\n\n\n<p>Objects based on the IResultObject interface hold unmanaged resources and must be disposed when no longer in use. This page shows the ways that IResultObject based objects are obtained using ExecuteQuery, GetInstance, GetArrayItems, and how to correctly dispose of them in each case.&nbsp;In almost all the sample code for SCCM SDK programming available online, the IResultObject based objects are usually not disposed correctly and rely on disposal will only occur during garbage collection.<\/p>\n\n\n\n<p>This is the declaration of IResultObject:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#1E1E1E;font-style:italic;color:#D4D4D4\"><span style=\"border-bottom:1px solid rgba(234, 191, 191, 0.2)\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>namespace Microsoft.ConfigurationManagement.ManagementProvider\n{\n    public interface IResultObject : IComparable, IDisposable, ICloneable\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">namespace<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Microsoft<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4EC9B0\">ConfigurationManagement<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4EC9B0\">ManagementProvider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">interface<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> : <\/span><span style=\"color: #4EC9B0\">IComparable<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4EC9B0\">IDisposable<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4EC9B0\">ICloneable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>As the interface implements <strong>IDisposable<\/strong> then the user of these objects is responsible for calling the <strong>Dipose<\/strong> method on them when they are no longer in use. Access to IResultObject is usually achieved from the return value from these methods:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CreateInstance \/ GetInstance<\/li>\n\n\n\n<li>ExecuteQuery<\/li>\n\n\n\n<li>GetArrayItems<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">CreateInstance and GetInstance.<\/h2>\n\n\n\n<p>MSDN description of <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/cc146180.aspx\" target=\"_blank\" rel=\"noopener\">CreateInstance<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.configurationmanagement.managementprovider.connectionmanagerbase.getinstance.aspx\" target=\"_blank\" rel=\"noopener\">GetInstance<\/a>.<\/p>\n\n\n\n<p>CreateInstance and GetInstance return an&nbsp;<strong>IResultObject<\/strong> interface for a <strong>WqlResultObject<\/strong> object. This object implements <strong>IDisposable<\/strong> and must be disposed to release unmanaged resources.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ExecuteQuery<\/h2>\n\n\n\n<p><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/cc146276.aspx\">MSDN description of ExecuteQuery<\/a>.<\/p>\n\n\n\n<p>ExecuteQuery&nbsp;returns an <strong>IResultObject<\/strong> interface for a <strong>WqlQueryResultsObject<\/strong> object which acts as a collection of other IResultObject objects. This object implements <strong>IDisposable<\/strong> and must be disposed to release unmanaged resources. The fact that an IResultObject can describe both a single object and a object that references a collection of objects can be very confusing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">GetArrayItems<\/h2>\n\n\n\n<p><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.configurationmanagement.managementprovider.resultobjectsmanager.getarrayitems.aspx\">MSDN description of GetArrayItems<\/a>.<\/p>\n\n\n\n<p>GetArrayItems returns a <strong>List&lt;IResultObject&gt;<\/strong>. Even though <strong>List<\/strong> is a managed object the <strong>items contained<\/strong> in the list will not be automatically disposed until they are garbage collected so each item must be disposed manually when no longer required. This is done by iterating over each <strong>IResultObject<\/strong> in the list and calling&nbsp;<strong>Dispose<\/strong>. An easy way to achieve this is to create an extension method for&nbsp;<strong>IEnumerable<\/strong> (for handling more than just List) that provides a&nbsp;<strong>DisposeItems<\/strong> method that will iterate and dispose.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#1E1E1E;font-style:italic;color:#D4D4D4\"><span style=\"border-bottom:1px solid rgba(234, 191, 191, 0.2)\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>public static class Extensions\n{\n    \/\/\/ &lt;summary>\n    \/\/\/     Runs Dispose() on all IResultObject items in an IEnumerable container such as a List. Use this when you have a list\n    \/\/\/     of IResultObjects and you want to Dipose() each to release WMI resources.\n    \/\/\/ &lt;\/summary>\n    public static void DisposeItems(this IEnumerable&lt;IResultObject> items)\n    {\n        foreach (IResultObject item in items)\n        {\n            item.Dispose();\n        }\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">static<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Extensions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">    \/\/\/ <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">summary<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">    \/\/\/     Runs Dispose() on all IResultObject items in an IEnumerable container such as a List. Use this when you have a list<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">    \/\/\/     of IResultObjects and you want to Dipose() each to release WMI resources.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">    \/\/\/ <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">summary<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">static<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">void<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">DisposeItems<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">this<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">IEnumerable<\/span><span style=\"color: #D4D4D4\">&lt;<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\">&gt; <\/span><span style=\"color: #9CDCFE\">items<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">foreach<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">items<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Dispose<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Usage and disposal of GetArrayItems now becomes:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#1E1E1E;font-style:italic;color:#D4D4D4\"><span style=\"border-bottom:1px solid rgba(234, 191, 191, 0.2)\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>List&lt;IResultObject> items = collection.GetArrayItems(\"CollectionRules\");\n\n\/\/ Do something with items\n\nitems.DisposeItems();<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #4EC9B0\">List<\/span><span style=\"color: #D4D4D4\">&lt;<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\">&gt; <\/span><span style=\"color: #9CDCFE\">items<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">collection<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetArrayItems<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;CollectionRules&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Do something with items<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">items<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">DisposeItems<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Examples and Downloads<\/h2>\n\n\n\n<p>The examples on this page can be downloaded from the <a href=\"https:\/\/github.com\/AutoItConsulting\/sccm-sdk-snippets\" target=\"_blank\" rel=\"noopener\">GitHub repo<\/a>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/AutoItConsulting\/sccm-sdk-snippets\/blob\/master\/src\/AutoIt.SCCM.SDK.Snippets\/Fundamentals\/IResultObjectDisposal.cs\" target=\"_blank\" rel=\"noopener\">IResultObjectDisposal.cs<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/AutoItConsulting\/sccm-sdk-snippets\/blob\/master\/src\/AutoIt.SCCM.SDK.Snippets\/Extensions.cs\" target=\"_blank\" rel=\"noopener\">Extensions.cs<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IResultObject &#8211; ExecuteQuery Dispose with Using<\/h3>\n\n\n\n<p>This example demonstrates IResultObject disposal after performing a query to return a collection and enumerating that collection with foreach. The&nbsp;<strong>Using<\/strong> keyword is used to dispose of items as they are enumerated.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#1E1E1E;font-style:italic;color:#D4D4D4\"><span style=\"border-bottom:1px solid rgba(234, 191, 191, 0.2)\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private void IResultObjectExecuteQueryDisposalV1(WqlConnectionManager wqlConnection)\n{\n    try\n    {\n        \/\/ As an example, get all SMS_Package objects.\n        \/\/ ExecuteQuery returns IResultObject which is a WqlQueryResultsObject\n        using (IResultObject queryResults = wqlConnection.QueryProcessor.ExecuteQuery(\"SELECT * FROM SMS_Package\"))\n        {\n            \/\/ WqlQueryResultsObject.GetEnumerator() is implemented as:\n            \/\/ yield return (object) new WqlResultObject(this.ConnectionManager, this.ConnectionManager.NamedValueDictionary, managementObject);\n            foreach (IResultObject item in queryResults)\n            {\n                \/\/ Must call Dispose on each item enumerated\n                using (item)\n                {\n                    string packageName = item&#91;\"Name\"&#93;.StringValue;\n                    Console.WriteLine(\"Package: \" + packageName);\n                }\n            }\n        }\n    }\n    catch (SmsException)\n    {\n        \/\/ Error handling.\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">void<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">IResultObjectExecuteQueryDisposalV1<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4EC9B0\">WqlConnectionManager<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">wqlConnection<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">try<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">        \/\/ As an example, get all SMS_Package objects.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">        \/\/ ExecuteQuery returns IResultObject which is a WqlQueryResultsObject<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">using<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">queryResults<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">wqlConnection<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">QueryProcessor<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">ExecuteQuery<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;SELECT * FROM SMS_Package&quot;<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">            \/\/ WqlQueryResultsObject.GetEnumerator() is implemented as:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">            \/\/ yield return (object) new WqlResultObject(this.ConnectionManager, this.ConnectionManager.NamedValueDictionary, managementObject);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">foreach<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">queryResults<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">                \/\/ Must call Dispose on each item enumerated<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">using<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">packageName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #CE9178\">&quot;Name&quot;<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">StringValue<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #9CDCFE\">Console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Package: &quot;<\/span><span style=\"color: #D4D4D4\"> + <\/span><span style=\"color: #9CDCFE\">packageName<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">catch<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">SmsException<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">        \/\/ Error handling.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">IResultObject &#8211; ExecuteQuery Dispose Directly<\/h3>\n\n\n\n<p>This example demonstrates IResultObject disposal after performing a query to return a collection and enumerating that collection with foreach. The&nbsp;<strong>Dispose<\/strong>&nbsp;method is used to dispose of items.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#1E1E1E;font-style:italic;color:#D4D4D4\"><span style=\"border-bottom:1px solid rgba(234, 191, 191, 0.2)\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private void IResultObjectExecuteQueryDisposalV2(WqlConnectionManager wqlConnection)\n{\n    try\n    {\n        \/\/ As an example, get all SMS_Package objects.\n        \/\/ ExecuteQuery returns IResultObject which is a WqlQueryResultsObject\n        using (IResultObject queryResults = wqlConnection.QueryProcessor.ExecuteQuery(\"SELECT * FROM SMS_Package\"))\n        {\n            \/\/ WqlQueryResultsObject.GetEnumerator() is implemented as:\n            \/\/ yield return (object) new WqlResultObject(this.ConnectionManager, this.ConnectionManager.NamedValueDictionary, managementObject);\n            foreach (IResultObject item in queryResults)\n            {\n                string packageName = item&#91;\"Name\"&#93;.StringValue;\n                Console.WriteLine(\"Package: \" + packageName);\n\n                \/\/ Must call Dispose on each item enumerated\n                item.Dispose();\n            }\n        }\n    }\n    catch (SmsException)\n    {\n        \/\/ Error handling.\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">void<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">IResultObjectExecuteQueryDisposalV2<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4EC9B0\">WqlConnectionManager<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">wqlConnection<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">try<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">        \/\/ As an example, get all SMS_Package objects.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">        \/\/ ExecuteQuery returns IResultObject which is a WqlQueryResultsObject<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">using<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">queryResults<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">wqlConnection<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">QueryProcessor<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">ExecuteQuery<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;SELECT * FROM SMS_Package&quot;<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">            \/\/ WqlQueryResultsObject.GetEnumerator() is implemented as:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">            \/\/ yield return (object) new WqlResultObject(this.ConnectionManager, this.ConnectionManager.NamedValueDictionary, managementObject);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">foreach<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">queryResults<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">packageName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #CE9178\">&quot;Name&quot;<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">StringValue<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">Console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Package: &quot;<\/span><span style=\"color: #D4D4D4\"> + <\/span><span style=\"color: #9CDCFE\">packageName<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">                \/\/ Must call Dispose on each item enumerated<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Dispose<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">catch<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">SmsException<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">        \/\/ Error handling.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">IResultObject &#8211; Dispose Method Return<\/h3>\n\n\n\n<p>This example demonstrates how to return an IResultObject from a method and how the caller should dispose of it.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#1E1E1E;font-style:italic;color:#D4D4D4\"><span style=\"border-bottom:1px solid rgba(234, 191, 191, 0.2)\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private void IResultObjectDisposalOfReturnValue(WqlConnectionManager wqlConnection)\n{\n    \/\/ Call method that returns an IResultObject - we are responsible for calling Dispose.\n    using (IResultObject item = IResultObjectReturnSmsPackage(wqlConnection))\n    {\n        string packageName = item&#91;\"Name\"&#93;.StringValue;\n        Console.WriteLine(\"Package: \" + packageName);\n    }\n}\n\nprivate IResultObject IResultObjectReturnSmsPackage(WqlConnectionManager wqlConnection)\n{\n    try\n    {\n        \/\/ As an example, get all SMS_Package objects.\n        using (IResultObject queryResults = wqlConnection.QueryProcessor.ExecuteQuery(\"SELECT * FROM SMS_Package\"))\n        {\n            \/\/ Just return the first item as an example\n            foreach (IResultObject item in queryResults)\n            {\n                \/\/ Don't call Dispose on the item, the caller will now be responsible for it\n                return item;\n            }\n        }\n    }\n    catch (SmsException)\n    {\n        \/\/ Error handling.\n        return null;\n    }\n\n    \/\/ No items\n    return null;\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">void<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">IResultObjectDisposalOfReturnValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4EC9B0\">WqlConnectionManager<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">wqlConnection<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">    \/\/ Call method that returns an IResultObject - we are responsible for calling Dispose.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">using<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">IResultObjectReturnSmsPackage<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">wqlConnection<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">packageName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #CE9178\">&quot;Name&quot;<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">StringValue<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">Console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">WriteLine<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Package: &quot;<\/span><span style=\"color: #D4D4D4\"> + <\/span><span style=\"color: #9CDCFE\">packageName<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">IResultObjectReturnSmsPackage<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4EC9B0\">WqlConnectionManager<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">wqlConnection<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">try<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">        \/\/ As an example, get all SMS_Package objects.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">using<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">queryResults<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">wqlConnection<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">QueryProcessor<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">ExecuteQuery<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;SELECT * FROM SMS_Package&quot;<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">            \/\/ Just return the first item as an example<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">foreach<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">IResultObject<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">queryResults<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">                \/\/ Don&#39;t call Dispose on the item, the caller will now be responsible for it<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">item<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">catch<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">SmsException<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">        \/\/ Error handling.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">    \/\/ No items<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview Objects based on the IResultObject interface hold unmanaged resources and must be disposed when no longer in use. This page shows the ways that IResultObject based objects are obtained using ExecuteQuery, GetInstance, GetArrayItems, and how to correctly dispose of them in each case.&nbsp;In almost all the sample code for SCCM SDK programming available online, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":100234,"parent":1769,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1771","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/pages\/1771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/comments?post=1771"}],"version-history":[{"count":12,"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/pages\/1771\/revisions"}],"predecessor-version":[{"id":100259,"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/pages\/1771\/revisions\/100259"}],"up":[{"embeddable":true,"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/pages\/1769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/media\/100234"}],"wp:attachment":[{"href":"https:\/\/www.autoitconsulting.com\/site\/wp-json\/wp\/v2\/media?parent=1771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}