コード例 #1
0
ファイル: PaLexicalInfo.cs プロジェクト: vkarthim/FieldWorks
        /// ------------------------------------------------------------------------------------
        private bool LoadFwDataForPa(PaRemoteRequest requestor, string name, string server,
                                     bool loadOnlyWs, int timeToWaitForLoadingData,
                                     bool newProcessStarted, out bool foundFwProcess)
        {
            foundFwProcess = false;

            Func <string, string, bool> invoker = requestor.ShouldWait;
            DateTime endTime = DateTime.Now.AddMilliseconds(timeToWaitForLoadingData);

            // Wait until this process knows which project it is loading.
            bool shouldWait;

            do
            {
                IAsyncResult ar = invoker.BeginInvoke(name, server, null, null);
                if (!ar.AsyncWaitHandle.WaitOne(endTime - DateTime.Now, false))
                {
                    return(false);
                }

                // Get the return value of the ShouldWait method.
                shouldWait = invoker.EndInvoke(ar);
                if (shouldWait)
                {
                    if (timeToWaitForLoadingData > 0 && DateTime.Now > endTime)
                    {
                        return(false);
                    }

                    Thread.Sleep(100);
                }
            } while (shouldWait);

            if (!requestor.IsMyProject(name, server))
            {
                return(false);
            }

            string xml = requestor.GetWritingSystems();

            m_writingSystems = XmlSerializationHelper.DeserializeFromString <List <PaWritingSystem> >(xml);

            if (!loadOnlyWs)
            {
                xml          = requestor.GetLexEntries();
                m_lexEntries = XmlSerializationHelper.DeserializeFromString <List <PaLexEntry> >(xml);
            }

            if (newProcessStarted)
            {
                requestor.ExitProcess();
            }

            foundFwProcess = true;
            return(true);
        }
コード例 #2
0
ファイル: PaLexicalInfo.cs プロジェクト: bbriggs/FieldWorks
		/// ------------------------------------------------------------------------------------
		private bool LoadFwDataForPa(PaRemoteRequest requestor, string name, string server,
			bool loadOnlyWs, int timeToWaitForLoadingData,
			bool newProcessStarted, out bool foundFwProcess)
		{
			foundFwProcess = false;

			Func<string, string, bool> invoker = requestor.ShouldWait;
			DateTime endTime = DateTime.Now.AddMilliseconds(timeToWaitForLoadingData);

			// Wait until this process knows which project it is loading.
			bool shouldWait;
			do
			{
				IAsyncResult ar = invoker.BeginInvoke(name, server, null, null);
				if (!ar.AsyncWaitHandle.WaitOne(endTime - DateTime.Now, false))
					return false;

				// Get the return value of the ShouldWait method.
				shouldWait = invoker.EndInvoke(ar);
				if (shouldWait)
				{
					if (timeToWaitForLoadingData > 0 && DateTime.Now > endTime)
						return false;

					Thread.Sleep(100);
				}
			} while (shouldWait);

			if (!requestor.IsMyProject(name, server))
				return false;

			string xml = requestor.GetWritingSystems();
			m_writingSystems = XmlSerializationHelper.DeserializeFromString<List<PaWritingSystem>>(xml);

			if (!loadOnlyWs)
			{
				xml = requestor.GetLexEntries();
				m_lexEntries = XmlSerializationHelper.DeserializeFromString<List<PaLexEntry>>(xml);
			}

			if (newProcessStarted)
				requestor.ExitProcess();

			foundFwProcess = true;
			return true;
		}