コード例 #1
0
            private void GetResourceStringCode(object userDataIn)
            {
                GetResourceStringUserData data = (GetResourceStringUserData)userDataIn;

                Environment.ResourceHelper resourceHelper = data.m_resourceHelper;
                string      key     = data.m_key;
                CultureInfo culture = data.m_culture;

                Monitor.Enter(resourceHelper, ref data.m_lockWasTaken);
                if (((resourceHelper.currentlyLoading != null) && (resourceHelper.currentlyLoading.Count > 0)) && resourceHelper.currentlyLoading.Contains(key))
                {
                    try
                    {
                        new StackTrace(true).ToString(StackTrace.TraceFormat.NoResourceLookup);
                    }
                    catch (StackOverflowException)
                    {
                    }
                    catch (NullReferenceException)
                    {
                    }
                    catch (OutOfMemoryException)
                    {
                    }
                    data.m_retVal = "[Resource lookup failed - infinite recursion or critical failure detected.]";
                }
                else
                {
                    if (resourceHelper.currentlyLoading == null)
                    {
                        resourceHelper.currentlyLoading = new Stack(4);
                    }
                    if (!resourceHelper.resourceManagerInited)
                    {
                        RuntimeHelpers.PrepareConstrainedRegions();
                        try
                        {
                        }
                        finally
                        {
                            RuntimeHelpers.RunClassConstructor(typeof(ResourceManager).TypeHandle);
                            RuntimeHelpers.RunClassConstructor(typeof(ResourceReader).TypeHandle);
                            RuntimeHelpers.RunClassConstructor(typeof(RuntimeResourceSet).TypeHandle);
                            RuntimeHelpers.RunClassConstructor(typeof(BinaryReader).TypeHandle);
                            resourceHelper.resourceManagerInited = true;
                        }
                    }
                    resourceHelper.currentlyLoading.Push(key);
                    if (resourceHelper.SystemResMgr == null)
                    {
                        resourceHelper.SystemResMgr = new ResourceManager(this.m_name, typeof(object).Assembly);
                    }
                    string str2 = resourceHelper.SystemResMgr.GetString(key, null);
                    resourceHelper.currentlyLoading.Pop();
                    data.m_retVal = str2;
                }
            }
コード例 #2
0
            private void GetResourceStringBackoutCode(object userDataIn, bool exceptionThrown)
            {
                GetResourceStringUserData data = (GetResourceStringUserData)userDataIn;

                Environment.ResourceHelper resourceHelper = data.m_resourceHelper;
                if (exceptionThrown && data.m_lockWasTaken)
                {
                    resourceHelper.SystemResMgr     = null;
                    resourceHelper.currentlyLoading = null;
                }
                if (data.m_lockWasTaken)
                {
                    Monitor.Exit(resourceHelper);
                }
            }
コード例 #3
0
 public GetResourceStringUserData(Environment.ResourceHelper resourceHelper, string key, CultureInfo culture)
 {
     this.m_resourceHelper = resourceHelper;
     this.m_key            = key;
     this.m_culture        = culture;
 }
コード例 #4
0
				public GetResourceStringUserData(Environment.ResourceHelper resourceHelper, string key, CultureInfo culture)
				{
					this.m_resourceHelper = resourceHelper;
					this.m_key = key;
					this.m_culture = culture;
				}
コード例 #5
0
		private static void InitResourceHelper()
		{
			bool flag = false;
			RuntimeHelpers.PrepareConstrainedRegions();
			try
			{
				Monitor.Enter(Environment.InternalSyncObject, ref flag);
				if (Environment.m_resHelper == null)
				{
					Environment.ResourceHelper resHelper = new Environment.ResourceHelper("mscorlib");
					Thread.MemoryBarrier();
					Environment.m_resHelper = resHelper;
				}
			}
			finally
			{
				if (flag)
				{
					Monitor.Exit(Environment.InternalSyncObject);
				}
			}
		}
コード例 #6
0
 public GetResourceStringUserData(Environment.ResourceHelper resourceHelper, string key)
 {
     this.m_resourceHelper = resourceHelper;
     this.m_key            = key;
 }