332 lines
45 KiB
HTML
332 lines
45 KiB
HTML
<html>
|
|
|
|
<head>
|
|
<title>Change Card Variables Add-in Example (C#)</title>
|
|
<meta http-equiv="Content-Language" content="en-us">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
|
<link rel="stylesheet" type="text/css" href="ApiHelp.css">
|
|
<style type="text/css">
|
|
.auto-style2 {
|
|
color: #2B91AF;
|
|
}
|
|
</style>
|
|
</head>
|
|
<meta name=MS-HKWD content="Add-ins, C#">
|
|
<meta name=MS-HKWD content="C# add-ins">
|
|
<meta name=MS-HKWD content="C# add-ins,hooks">
|
|
<meta name=MS-HKWD content="C# add-ins,card variables">
|
|
<meta name=MS-HKWD content="C# add-ins,dictionaries">
|
|
|
|
<body>
|
|
<h1><span style="font-weight: normal; font-size: 7.5pt;">SOLIDWORKS PDM Professional API Help</span></h1>
|
|
<h1>Change Card Variables Add-in Example (C#)</h1>
|
|
<p><a name="top"></a>This example shows how to create an add-in that pops up a message box when a file is
|
|
approved.</p>
|
|
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<span style="color:green;">//--------------------------------------------------------------------------------------</span><br>
|
|
<span style="color:green;">// Preconditions:</span><br>
|
|
<span style="color:green;">// 1. Start Microsoft Visual Studio.</span><br>
|
|
<span style="color:green;">// 2. Click <b>File > New > Project > Visual C# > Class Library (.NET Framework)</b>.</span><br>
|
|
<span style="color:green;">// 3. Select <b>.NET Framework 4.5
|
|
or later</b> in the dropdown.</span><br>
|
|
<span style="color:green;">// 4. Type <b>CardVariables_CSharp</b> in <b>Name</b>.</span><br>
|
|
<span style="color:green;">// 5. Click <b>Browse</b> and navigate to the folder where to create the project.</span><br>
|
|
<span style="color:green;">// 6. Click <b>OK</b>. </span><br>
|
|
<span style="color:green;">// 7. Right-click the project name in the Solution Explorer and click <b>Add Reference</b>. </span><br>
|
|
<span style="color:green;">// 8. In the Add Reference dialog: </span><br>
|
|
<span style="color:green;">// a. Add the
|
|
SOLIDWORKS PDM Professional interop assembly as a reference <font size="2"><span style="color:green;">(click <strong>Browse</strong> in the</span><br>
|
|
<span style="color: #008000">//</span> left-side panel, click
|
|
<strong>EPDM.Interop.epdm.dll</strong>, <br>
|
|
// and click <strong>OK</strong>).<br><span style="color:green;">// b. Add <b>Microsoft.VisualBasic </b>
|
|
and<b> System.Windows.Forms</b> as a references (click <b>Assemblies
|
|
> Framework</b> in the</span><br>
|
|
// left-side panel, click <b>System.Windows.Forms </b>
|
|
and<b> Microsoft.VisualBasic</b>, and click <strong>OK</strong>).</font></span><br>
|
|
<span style="color:green;">// c. Click <b>Close</b>.</span><br>
|
|
<span style="color:green;">// 9. Right-click the project name in the Solution Explorer and click <b>Properties</b>.</span><br>
|
|
<span style="color:green;">//10. In the Properties window:</span><br>
|
|
<span style="color:green;">// a. On the Application tab, click<b> Assembly Information</b>.</span><br>
|
|
<span style="color:green;">// b. De-select <b>Make assembly COM-Visible</b>.</span><br>
|
|
<span style="color:green;">// c. On the Build tab,
|
|
select <strong>Any CPU</strong>, de-select <strong>Prefer 32-bit</strong>, and
|
|
select <strong>Register for COM interop</strong>.<br>
|
|
//11. Save the project.</span><br>
|
|
<span style="color:green;">//12. Copy the code below to <b>Class1.cs</b>.<br>
|
|
//13. </span><font size="2"><font color="#008000">To populate the GUID
|
|
attribute, click <b>Tools > Create GUID</b> in the IDE, <br>
|
|
// select GUID Format 5, click <b>Copy</b>, and click <b>Exit</b>.
|
|
Populate [</font><span style="color:#008000;">Guid</span><font color="#008000">(</font><span style="color:#008000;">""</span><font color="#008000">),...]
|
|
with <br>
|
|
// the copied string.</font></font><br>
|
|
<span style="color:green;">//14. Click <b>Build > Build Solution</b>.</span><br>
|
|
<span style="color:green;">//</span><br><span style="color:green;">// Postconditions: </span><br>
|
|
<span style="color:green;">// 1. Open the SOLIDWORKS PDM Professional Administration tool, expand a <i>vault_name</i> node, </span><br>
|
|
<span style="color:green;">// and log in as Admin.</span><br>
|
|
<span style="color:green;">// 2. Under <i>vault_name</i>, right-click <b>Add-ins,</b> and click <b>New Add-in</b>.</span><br>
|
|
<span style="color:green;">// a. Navigate to the <b>bin\Debug</b> directory of your built project.</span><br>
|
|
<span style="color:green;">// b. Click <b>EPDM.Interop.epdm.dll</b> and <b>CardVariables.dll</b>.</span><br>
|
|
<span style="color:green;">// c. Click <b>Open</b>.</span><br>
|
|
<span style="color:green;">// d. Click <b>OK</b>.</span><br>
|
|
<span style="color:green;">// 3. Click <b>OK</b> after reading the SOLIDWORKS PDM Professional warning dialog.<br>
|
|
// 4. In the taskbar, click the Administration tool blueberry and click <b>Log
|
|
off > </b><i>vault_name</i>.</span><br>
|
|
<span style="color:green;">// 5. Open File Explorer on a view of <i>vault_name</i> to:<br>
|
|
// a. Log in as Admin.</span><br>
|
|
<span style="color:green;">// b. Create, check in,
|
|
and check out a file whose data card contains <b>Project Name</b> <br>
|
|
// and <b>Project Number</b>.</span><br>
|
|
<span style="color:green;">// c. Click the <b>Data Card</b> tab.</span><br>
|
|
<span style="color:green;">// d. In <b>Project Name,</b> type <b>Mercury</b>, <b>Venus</b>, <b>Earth</b>, <b>Mars</b>, <b>Jupiter</b>, or <b>Saturn</b>.</span><br>
|
|
<span style="color:green;">// e. Observe the change in <b>Project Number</b>.<br>// f. In <b>Project Number,</b> type a number between <b>1000</b> and <b>1005</b>.</span><br>
|
|
<span style="color:green;">// g. Observe the change in <b>Project Name</b>.</span><br>
|
|
<span style="color:green;">//---------------------------------------------------------------------------------------</span><br> </p>
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<span style="color:blue;">using</span> Microsoft.VisualBasic<br>
|
|
<span style="color:blue;">using</span> System;<br>
|
|
<span style="color:blue;">using</span> System.Collections;<br>
|
|
<span style="color:blue;">using</span> System.Collections.Generic;<br>
|
|
<span style="color:blue;">using</span> System.Data;<br>
|
|
<span style="color:blue;">using</span> System.Diagnostics;<br>
|
|
<span style="color:blue;">using</span> EPDM.Interop.epdm;<br>
|
|
<span style="color:blue;">using</span> System.Runtime.InteropServices;<br>
|
|
<br>
|
|
[<font face="Courier New" size="2"><span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">""</span>),
|
|
<span style="color:#2b91af;">ComVisible</span>(<span style="color: #0000FF">t</span><span style="color:blue;">rue</span>)] </font><br>
|
|
<span style="color:blue;">public</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">CardVariables</span> : <span style="color:#2b91af;">IEdmAddIn5</span><br>
|
|
{<br>
|
|
<br>
|
|
<span style="color:blue;">public</span> <span style="color:blue;">void</span> GetAddInInfo(<span style="color:blue;">ref</span> <span style="color:#2b91af;">EdmAddInInfo</span> poInfo, <span style="color:#2b91af;">IEdmVault5</span> poVault, <span style="color:#2b91af;">IEdmCmdMgr5</span> poCmdMgr)<br>
|
|
{<br>
|
|
<span style="color:blue;">try</span><br>
|
|
{<br>
|
|
poInfo.<b>mbsAddInName</b> = <span style="color:#a31515;">"C# Card Variable Add-In"</span>;<br>
|
|
poInfo.<b>mbsCompany</b> = <span style="color:#a31515;">"Dassault Systemes"</span>;<br>
|
|
poInfo.<b>mbsDescription</b> = <span style="color:#a31515;">"Example demonstrating updating a card variable based on another card variable"</span>;<br>
|
|
poInfo.<b>mlAddInVersion</b> = 1;<br>
|
|
<span style="color:green;">//Minimum SOLIDWORKS PDM Professional version</span><br>
|
|
<span style="color:green;">//needed for C# Add-Ins is 6.4</span><br>
|
|
poInfo.<b>mlRequiredVersionMajor</b> = 6;<br>
|
|
poInfo.<b>mlRequiredVersionMinor</b> = 4;<br>
|
|
<br>
|
|
<span style="color:green;">//Register to receive a notification when</span><br>
|
|
<span style="color:green;">//a data card variable value changes</span><br>
|
|
poCmdMgr.<b>AddHook</b>(<span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_CardInput);<br>
|
|
<br>
|
|
<span style="color:#2b91af;">IEdmDictionary5</span> ProjectDictionary = <span style="color:blue;">default</span>(<span style="color:#2b91af;">IEdmDictionary5</span>);<br>
|
|
ProjectDictionary = poVault.<b>GetDictionary</b>(<span style="color:#a31515;">"Projects"</span>, <span style="color:blue;">true</span>);<br>
|
|
<br>
|
|
<span style="color:blue;">bool</span> SuccessSet = <span style="color:blue;">false</span>;<br>
|
|
SuccessSet = ProjectDictionary.<b>StringTestAndSetAt</b>(<span style="color:#a31515;">"1000"</span>, <span style="color:#a31515;">"Mercury"</span>);<br>
|
|
SuccessSet = ProjectDictionary.<b>StringTestAndSetAt</b>(<span style="color:#a31515;">"1001"</span>, <span style="color:#a31515;">"Venus"</span>);<br>
|
|
SuccessSet = ProjectDictionary.<b>StringTestAndSetAt</b>(<span style="color:#a31515;">"1002"</span>, <span style="color:#a31515;">"Earth"</span>);<br>
|
|
SuccessSet = ProjectDictionary.<b>StringTestAndSetAt</b>(<span style="color:#a31515;">"1003"</span>, <span style="color:#a31515;">"Mars"</span>);<br>
|
|
SuccessSet = ProjectDictionary.<b>StringTestAndSetAt</b>(<span style="color:#a31515;">"1004"</span>, <span style="color:#a31515;">"Jupiter"</span>);<br>
|
|
SuccessSet = ProjectDictionary.<b>StringTestAndSetAt</b>(<span style="color:#a31515;">"1005"</span>, <span style="color:#a31515;">"Saturn"</span>);<br>
|
|
<br>
|
|
}<br>
|
|
<span style="color:blue;">catch</span> (System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span> ex)<br>
|
|
{<br>
|
|
MessageBox.Show(<span style="color:#a31515;">"HRESULT = 0x"</span> + ex.ErrorCode.ToString(<span style="color:#a31515;">"X"</span>) + "\r\n" + ex.Message);<br>
|
|
}<br>
|
|
<span style="color:blue;">catch</span> (<span style="color:#2b91af;">Exception</span> ex)<br>
|
|
{<br>
|
|
MessageBox.Show(ex.Message);<br>
|
|
}<br>
|
|
}</p>
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<br>
|
|
<span style="color:blue;">readonly</span> Microsoft.VisualBasic.CompilerServices.<span style="color:#2b91af;">StaticLocalInitFlag</span> static_OnCmd_VariableChangeInProgress_Init = <span style="color:blue;">new</span> Microsoft.VisualBasic.CompilerServices.<span style="color:#2b91af;">StaticLocalInitFlag</span>();<br>
|
|
<br>
|
|
<br>
|
|
<span style="color:green;">//A data card variable value has changed</span><br>
|
|
<span style="color:blue;">bool</span> static_OnCmd_VariableChangeInProgress;<br>
|
|
<span style="color:blue;">public</span> <span style="color:blue;">void</span> OnCmd(<span style="color:blue;">ref</span> <span style="color:#2b91af;">EdmCmd</span> poCmd, <span style="color:blue;">ref</span> <span class="auto-style2">EdmCmdData</span>[] ppoData)<br>
|
|
{<br>
|
|
<span style="color:blue;">try</span><br>
|
|
{<br>
|
|
<span style="color:blue;">switch</span> (poCmd.meCmdType)<br>
|
|
{<br>
|
|
<span style="color:blue;">case</span> <span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_CardInput:<br>
|
|
<br>
|
|
<span style="color:blue;">lock</span> (static_OnCmd_VariableChangeInProgress_Init)<br>
|
|
{<br>
|
|
<span style="color:blue;">try</span><br>
|
|
{<br>
|
|
<span style="color:blue;">if</span> (InitStaticVariableHelper(static_OnCmd_VariableChangeInProgress_Init))<br>
|
|
{<br>
|
|
static_OnCmd_VariableChangeInProgress = <span style="color:blue;">false</span>;<br>
|
|
}<br>
|
|
}<br>
|
|
<span style="color:blue;">finally</span><br>
|
|
{<br>
|
|
static_OnCmd_VariableChangeInProgress_Init.State = 1;<br>
|
|
}<br>
|
|
}<br>
|
|
<br>
|
|
<span style="color:#2b91af;">IEdmEnumeratorVariable5</span> vars = (<span style="color:#2b91af;">IEdmEnumeratorVariable5</span>)poCmd.<b>mpoExtra</b>;<br>
|
|
<span style="color:#2b91af;">IEdmStrLst5</span> ConfigNames = (<span style="color:#2b91af;">IEdmStrLst5</span>)((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(0)).<b>mpoExtra</b>;<br>
|
|
<span style="color:blue;">string</span> Config = <span style="color:blue;">null</span>;<br>
|
|
<span style="color:blue;">if</span> (IsConfigInList(ConfigNames, <span style="color:#a31515;">"@"</span>))<br>
|
|
{<br>
|
|
Config = <span style="color:#a31515;">"@"</span>;<br>
|
|
}<br>
|
|
<span style="color:blue;">else</span><br>
|
|
{<br>
|
|
Config = <span style="color:#a31515;">""</span>;<br>
|
|
}<br>
|
|
<br>
|
|
<span style="color:green;">//Take appropriate action based on the data card variable that has changed</span><br>
|
|
<span style="color:blue;">switch</span> (poCmd.<b>mbsComment</b>)<br>
|
|
{<br>
|
|
<br>
|
|
<span style="color:green;">//The Project Name variable has changed</span><br>
|
|
<span style="color:blue;">case</span> <span style="color:#a31515;">"Project Name"</span>:<br>
|
|
<span style="color:blue;">if</span> (static_OnCmd_VariableChangeInProgress == <span style="color:blue;">true</span>)<br>
|
|
{<br>
|
|
static_OnCmd_VariableChangeInProgress = <span style="color:blue;">false</span>;<br>
|
|
<span style="color:blue;">break</span>; <br>
|
|
}<br>
|
|
<span style="color:blue;">object</span> ProjectName = <span style="color:#a31515;">""</span>;<br>
|
|
vars.<b>GetVar</b>(<span style="color:#a31515;">"Project Name"</span>, Config, <span style="color:blue;">out</span> ProjectName);<br>
|
|
<br>
|
|
<span style="color:green;">//Get the old Project Number</span><br>
|
|
<span style="color:blue;">object</span> ProjectNumber = <span style="color:#a31515;">""</span>;<br>
|
|
vars.<b>GetVar</b>(<span style="color:#a31515;">"Project number"</span>, Config, <span style="color:blue;">out</span> ProjectNumber);<br>
|
|
<br>
|
|
<span style="color:green;">//Get the existing Projects dictionary</span><br>
|
|
<span style="color:#2b91af;">IEdmDictionary5</span> ProjectDictionary = <span style="color:blue;">default</span>(<span style="color:#2b91af;">IEdmDictionary5</span>);<br>
|
|
ProjectDictionary = ((<span style="color:#2b91af;">IEdmVault5</span>)(poCmd.mpoVault)).<b>GetDictionary</b>(<span style="color:#a31515;">"Projects"</span>, <span style="color:blue;">false</span>);<br>
|
|
<br>
|
|
<span style="color:green;">//Look up the new project number</span><br>
|
|
<span style="color:blue;">string</span> NewProjectNumber = <span style="color:#a31515;">""</span>;<br>
|
|
<span style="color:green;">//Find all values containing the substring</span><br>
|
|
<span style="color:green;">//stored in ProjectName </span><br>
|
|
<span style="color:blue;">string</span> key = <span style="color:#a31515;">""</span>;<br>
|
|
<span style="color:blue;">string</span> value = <span style="color:#a31515;">""</span>;<br>
|
|
<span style="color:#2b91af;">IEdmPos5</span> pos = <span style="color:blue;">default</span>(<span style="color:#2b91af;">IEdmPos5</span>);<br>
|
|
pos = ProjectDictionary.<b>StringFindValues</b>((<span style="color:blue;">string</span>)ProjectName);<br>
|
|
<span style="color:blue;">while</span> (!pos.<b>IsNull</b>)<br>
|
|
{<br>
|
|
ProjectDictionary.<b>StringGetNextAssoc</b>(pos, <span style="color:blue;">out</span> key, <span style="color:blue;">out</span> value);<br>
|
|
<span style="color:green;">//Traverse the values until a match</span><br>
|
|
<span style="color:green;">//is found</span><br>
|
|
<span style="color:blue;">if</span> (value == (<span style="color:blue;">string</span>)ProjectName)<br>
|
|
{<br>
|
|
NewProjectNumber = key;<br>
|
|
<span style="color:blue;">break</span>;<br>
|
|
}<br>
|
|
}<br>
|
|
<br>
|
|
<span style="color:green;">//Only update the variable if it changed</span><br>
|
|
<span style="color:blue;">if</span> (!(NewProjectNumber == (<span style="color:blue;">string</span>)ProjectNumber))<br>
|
|
{<br>
|
|
static_OnCmd_VariableChangeInProgress = <span style="color:blue;">true</span>;<br>
|
|
vars.<b>SetVar</b>(<span style="color:#a31515;">"Project number"</span>, Config, NewProjectNumber);<br>
|
|
<br>
|
|
}<br>
|
|
<span style="color:blue;">break</span>;<br>
|
|
<br>
|
|
<span style="color:green;">//The Project Number variable has changed</span><br>
|
|
<span style="color:blue;">case</span> <span style="color:#a31515;">"Project number"</span>:<br>
|
|
<span style="color:blue;">if</span> (static_OnCmd_VariableChangeInProgress == <span style="color:blue;">true</span>)<br>
|
|
{<br>
|
|
static_OnCmd_VariableChangeInProgress = <span style="color:blue;">false</span>;<br>
|
|
<span style="color:blue;">break</span>; <br>
|
|
}<br>
|
|
<br>
|
|
<br>
|
|
ProjectNumber = <span style="color:#a31515;">""</span>;<br>
|
|
vars.<b>GetVar</b>(<span style="color:#a31515;">"Project number"</span>, Config, <span style="color:blue;">out</span> ProjectNumber);<br>
|
|
<br>
|
|
<span style="color:green;">//Get the old Project Name</span><br>
|
|
ProjectName = <span style="color:#a31515;">""</span>;<br>
|
|
vars.<b>GetVar</b>(<span style="color:#a31515;">"Project Name"</span>, Config, <span style="color:blue;">out</span> ProjectName);<br>
|
|
<br>
|
|
<span style="color:green;">//Get the existing Projects dictionary</span><br>
|
|
ProjectDictionary = ((<span style="color:#2b91af;">IEdmVault5</span>)(poCmd.mpoVault)).<b>GetDictionary</b>(<span style="color:#a31515;">"Projects"</span>, <span style="color:blue;">false</span>);<br>
|
|
<br>
|
|
<span style="color:green;">//Look up the project name</span><br>
|
|
<span style="color:blue;">string</span> NewProjectName = <span style="color:#a31515;">""</span>;<br>
|
|
ProjectDictionary.<b>StringGetAt</b>((<span style="color:blue;">string</span>)ProjectNumber, <span style="color:blue;">out</span> NewProjectName);<br>
|
|
<br>
|
|
<br>
|
|
<span style="color:green;">//Only update the variable if it's changed</span><br>
|
|
<span style="color:blue;">if</span> (!(NewProjectName == ((<span style="color:blue;">string</span>)ProjectName)))<br>
|
|
{<br>
|
|
static_OnCmd_VariableChangeInProgress = <span style="color:blue;">true</span>;<br>
|
|
vars.<b>SetVar</b>(<span style="color:#a31515;">"Project Name"</span>, Config, NewProjectName);<br>
|
|
}<br>
|
|
<span style="color:blue;">break</span>;<br>
|
|
}<br>
|
|
<span style="color:blue;">break</span>;<br>
|
|
}<br>
|
|
}<br>
|
|
<span style="color:blue;">catch</span> (System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span> ex)<br>
|
|
{<br>
|
|
MessageBox.Show(<span style="color:#a31515;">"HRESULT = 0x"</span> + ex.ErrorCode.ToString(<span style="color:#a31515;">"X"</span>) + "\r\n" + ex.Message);<br>
|
|
}<br>
|
|
<span style="color:blue;">catch</span> (<span style="color:#2b91af;">Exception</span> ex)<br>
|
|
{<br>
|
|
MessageBox.Show(ex.Message);<br>
|
|
}<br>
|
|
}<br>
|
|
<br>
|
|
<span style="color:blue;">private</span> <span style="color:blue;">bool</span> IsConfigInList(<span style="color:#2b91af;">IEdmStrLst5</span> ConfigNames, <span style="color:blue;">string</span> ConfigName)<br>
|
|
{<br>
|
|
<span style="color:blue;">bool</span> functionReturnValue = <span style="color:blue;">false</span>;<br>
|
|
functionReturnValue = <span style="color:blue;">false</span>;<br>
|
|
<span style="color:blue;">try</span><br>
|
|
{<br>
|
|
<span style="color:blue;">string</span> CurConfig = <span style="color:blue;">null</span>;<br>
|
|
<span style="color:#2b91af;">IEdmPos5</span> Pos = ConfigNames.<b>GetHeadPosition</b>();<br>
|
|
<span style="color:blue;">while</span> (!Pos.<b>IsNull</b>)<br>
|
|
{<br>
|
|
CurConfig = ConfigNames.<b>GetNext</b>(Pos);<br>
|
|
<span style="color:blue;">if</span> (CurConfig == ConfigName)<br>
|
|
{<br>
|
|
functionReturnValue = <span style="color:blue;">true</span>;<br>
|
|
<span style="color:blue;">break</span>; <br>
|
|
}<br>
|
|
}<br>
|
|
<span style="color:blue;">return</span> functionReturnValue;<br>
|
|
}<br>
|
|
<span style="color:blue;">catch</span> (System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span> ex)<br>
|
|
{<br>
|
|
MessageBox.Show(<span style="color:#a31515;">"HRESULT = 0x"</span> + ex.ErrorCode.ToString(<span style="color:#a31515;">"X"</span>) + "\r\n" + ex.Message);<br>
|
|
}<br>
|
|
<span style="color:blue;">catch</span> (<span style="color:#2b91af;">Exception</span> ex)<br>
|
|
{<br>
|
|
MessageBox.Show(ex.Message);<br>
|
|
}<br>
|
|
<span style="color:blue;">return</span> functionReturnValue;<br>
|
|
}</p>
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<br>
|
|
<span style="color:blue;">static</span> <span style="color:blue;">bool</span> InitStaticVariableHelper(Microsoft.VisualBasic.CompilerServices.<span style="color:#2b91af;">StaticLocalInitFlag</span> flag)<br>
|
|
{<br>
|
|
<span style="color:blue;">if</span> (flag.State == 0)<br>
|
|
{<br>
|
|
flag.State = 2;<br>
|
|
<span style="color:blue;">return</span> <span style="color:blue;">true</span>;<br>
|
|
}<br>
|
|
<span style="color:blue;">else</span> <span style="color:blue;">if</span> (flag.State == 2)<br>
|
|
{<br>
|
|
<span style="color:blue;">throw</span> <span style="color:blue;">new</span> Microsoft.VisualBasic.CompilerServices.<span style="color:#2b91af;">IncompleteInitialization</span>();<br>
|
|
}<br>
|
|
<span style="color:blue;">else</span><br>
|
|
{<br>
|
|
<span style="color:blue;">return</span> <span style="color:blue;">false</span>;<br>
|
|
}<br>
|
|
}<br>
|
|
<br>
|
|
}</p>
|
|
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" align="center">
|
|
<a href="#top">Back to top</a></p>
|
|
|
|
</body>
|
|
|
|
</html>
|