public void SetApartmentState(System.Threading.ApartmentState state) { if (!this.SetApartmentStateHelper(state, true)) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ApartmentStateSwitchFailed")); } }
private bool SetApartmentStateHelper(System.Threading.ApartmentState state, bool fireMDAOnMismatch) { System.Threading.ApartmentState state2 = (System.Threading.ApartmentState) this.SetApartmentStateNative((int)state, fireMDAOnMismatch); if (((state != System.Threading.ApartmentState.Unknown) || (state2 != System.Threading.ApartmentState.MTA)) && (state2 != state)) { return(false); } return(true); }
static bool RunTest(System.Threading.ThreadStart testThreadStart, System.Threading.ApartmentState apartmentState) { testsRan++; System.Threading.Thread testThread = new System.Threading.Thread(testThreadStart); succeeded = false; testThread.SetApartmentState(apartmentState); testThread.Start(); testThread.Join(); return(succeeded); }
public static Alt.Threading.ApartmentState ToApartmentState(System.Threading.ApartmentState src) { switch (src) { case System.Threading.ApartmentState.STA: return(Alt.Threading.ApartmentState.STA); case System.Threading.ApartmentState.MTA: return(Alt.Threading.ApartmentState.MTA); case System.Threading.ApartmentState.Unknown: return(Alt.Threading.ApartmentState.Unknown); } return(Alt.Threading.ApartmentState.Unknown); }
/// <summary> /// Initialization of ScriptParser instance /// </summary> /// <param name="fileName">Script file name</param> /// <param name="searchDirs">Extra ScriptLibrary directory(ies) </param> private void Init(string fileName, string[] searchDirs) { referencedNamespaces = new ArrayList(); referencedAssemblies = new ArrayList(); referencedResources = new ArrayList(); //process main file FileParser mainFile = new FileParser(fileName, null, true, false, searchDirs); this.apartmentState = mainFile.ThreadingModel; foreach (string namespaceName in mainFile.ReferencedNamespaces) { PushNamespace(namespaceName); } foreach (string asmName in mainFile.ReferencedAssemblies) { PushAssembly(asmName); } foreach (string resFile in mainFile.ReferencedResources) { PushResource(resFile); } ArrayList dirs = new ArrayList(); dirs.Add(Path.GetDirectoryName(mainFile.fileName)); //note: mainFile.fileName is warrantied to be a full name but fileName is not if (searchDirs != null) { dirs.AddRange(searchDirs); } this.searchDirs = (string[])dirs.ToArray(typeof(string)); //process impported files if any foreach (ScriptInfo fileInfo in mainFile.ReferencedScripts) { ProcessFile(fileInfo); } //Main script file shall always be the first. Add it now as previously array was sorted a few times this.fileParsers.Insert(0, mainFile); }
/// <summary> /// Initialization of ScriptParser instance /// </summary> /// <param name="fileName">Script file name</param> /// <param name="searchDirs">Extra ScriptLibrary directory(ies) </param> void Init(string fileName, string[] searchDirs) { ScriptPath = fileName; packages = new List <string>(); referencedNamespaces = new List <string>(); referencedAssemblies = new List <string>(); referencedResources = new List <string>(); ignoreNamespaces = new List <string>(); precompilers = new List <string>(); compilerOptions = new List <string>(); //process main file FileParser mainFile = new FileParser(fileName, null, true, false, searchDirs, throwOnError); this.apartmentState = mainFile.ThreadingModel; foreach (string file in mainFile.Precompilers) { PushPrecompiler(file); } foreach (string namespaceName in mainFile.IgnoreNamespaces) { PushIgnoreNamespace(namespaceName); } foreach (string namespaceName in mainFile.ReferencedNamespaces) { PushNamespace(namespaceName); } foreach (string asmName in mainFile.ReferencedAssemblies) { PushAssembly(asmName); } foreach (string name in mainFile.Packages) { PushPackage(name); } foreach (string resFile in mainFile.ReferencedResources) { PushResource(resFile); } foreach (string opt in mainFile.CompilerOptions) { PushCompilerOptions(opt); } List <string> dirs = new List <string>(); dirs.Add(Path.GetDirectoryName(mainFile.fileName));//note: mainFile.fileName is warrantied to be a full name but fileName is not if (searchDirs != null) { dirs.AddRange(searchDirs); } foreach (string dir in mainFile.ExtraSearchDirs) { if (Path.IsPathRooted(dir)) { dirs.Add(Path.GetFullPath(dir)); } else { dirs.Add(Path.Combine(Path.GetDirectoryName(mainFile.fileName), dir)); } } this.SearchDirs = Utils.RemovePathDuplicates(dirs.ToArray()); //process imported files if any foreach (ScriptInfo fileInfo in mainFile.ReferencedScripts) { ProcessFile(fileInfo); } //Main script file shall always be the first. Add it now as previously array was sorted a few times this.fileParsers.Insert(0, mainFile); }
public bool TrySetApartmentState(System.Threading.ApartmentState state) { throw null; }
public void SetApartmentState(System.Threading.ApartmentState state) { }
public void TestWithEnumAsArgument(System.Threading.ApartmentState state) { }
/// <summary> /// 延迟执行代码段(注意这将会在后台线程中执行)。 /// </summary> /// <param name="millisecondsTimeout">延时(毫秒)。</param> /// <param name="action">需要执行的代码。</param> /// <param name="apartmentState">线程启动前的单元状态。</param> /// <param name="isBackground">是否为后台线程。</param> public static System.Threading.Thread Delay( int millisecondsTimeout, System.Threading.ThreadStart action, System.Threading.ApartmentState apartmentState = System.Threading.ApartmentState.Unknown,
public bool TrySetApartmentState(System.Threading.ApartmentState state) { return(default(bool)); }
public bool TrySetApartmentState(System.Threading.ApartmentState state) { return(this.SetApartmentStateHelper(state, false)); }
/// <summary> /// Initialization of ScriptParser instance /// </summary> /// <param name="fileName">Script file name</param> /// <param name="searchDirs">Extra ScriptLibrary directory(ies) </param> private void Init(string fileName, string[] searchDirs) { referencedNamespaces = new ArrayList(); referencedAssemblies = new ArrayList(); referencedResources = new ArrayList(); //process main file FileParser mainFile = new FileParser(fileName, null, true, false, searchDirs); this.apartmentState = mainFile.ThreadingModel; foreach (string namespaceName in mainFile.ReferencedNamespaces) PushNamespace(namespaceName); foreach (string asmName in mainFile.ReferencedAssemblies) PushAssembly(asmName); foreach (string resFile in mainFile.ReferencedResources) PushResource(resFile); ArrayList dirs = new ArrayList(); dirs.Add(Path.GetDirectoryName(mainFile.fileName));//note: mainFile.fileName is warrantied to be a full name but fileName is not if (searchDirs != null) dirs.AddRange(searchDirs); this.searchDirs = (string[])dirs.ToArray(typeof(string)); //process impported files if any foreach (ScriptInfo fileInfo in mainFile.ReferencedScripts) ProcessFile(fileInfo); //Main script file shall always be the first. Add it now as previously array was sorted a few times this.fileParsers.Insert(0, mainFile); }
public ScriptParser(string fileName) { referencedNamespaces = new ArrayList(); referencedAssemblies = new ArrayList(); //process main file FileParser mainFile = new FileParser(fileName, null, true, false, null); this.apartmentState = mainFile.apartmentState; foreach (string namespaceName in mainFile.ReferencedNamespaces) PushNamespace(namespaceName); foreach (string asmName in mainFile.ReferencedAssemblies) PushAssembly(asmName); this.searchDirs = new string[] {Path.GetDirectoryName(mainFile.fileName)}; //note: mainFile.fileName is warrantied to be a full name but fileName is not //process impported files if any foreach (ScriptInfo fileInfo in mainFile.ReferencedScripts) ProcessFile(fileInfo); //Main script file shall always be the first. Add it now as previously array was sorted a few times this.fileParsers.Insert(0, mainFile); }
private void Parse(string codeStr) { referencedScripts.Clear(); referencedNamespaces.Clear(); string clearedCode = codeStr; int codeStartPos = 0; //remove comments of '/**/' style clearedCode = RegexReplace(clearedCode, @"/\* ([^/] | /[^\*])*? \*/", "", true); codeStartPos = RegexFind(clearedCode, @"(namespace|class)\s"); string declarationRegion = codeStartPos != -1 ? clearedCode.Substring(0, codeStartPos-1) : clearedCode; //extract all referenced scripts, assemblies and namespaces referencedScripts.AddRange(GetStatements( declarationRegion, @"(/[^/]|[^/]) //css_import\s*", new ParseStatement(ParseImport))); referencedAssemblies.AddRange(GetStatements( declarationRegion, @"(/[^/]|[^/]) //css_reference\s*", new ParseStatement(ParseAsmRefference))); referencedNamespaces.AddRange(GetStatements( declarationRegion, @"using\s*", new ParseStatement(ParseUsing))); string matchText = ""; if (RegexFind(clearedCode.Substring(declarationRegion.Length-1), @"(\s+|\n)\[(\s*\w*\s*)\]\s*(\w*)\s*(static|static\s*static)(\s*\w*\s*)\s+ void\s*Main\s*\(", ref matchText) != -1) { if (matchText.IndexOf("STAThread") != -1) apartmentState = System.Threading.ApartmentState.STA; else if (matchText.IndexOf("MTAThread") != -1) apartmentState = System.Threading.ApartmentState.MTA; } }