Beispiel #1
0
        public async Task <bool> RegisterCortanaCommands(Dictionary <string, Action> commands)
        {
            try
            {
                cortanaCommands  = commands;
                SpeechRecognizer = new SpeechRecognizer();
                var constraint = new SpeechRecognitionListConstraint(cortanaCommands.Keys);
                SpeechRecognizer.Constraints.Clear();
                SpeechRecognizer.Constraints.Add(constraint);
                var result = await SpeechRecognizer.CompileConstraintsAsync();

                if (result.Status == SpeechRecognitionResultStatus.Success)
                {
                    SpeechRecognizer.ContinuousRecognitionSession.StartAsync();
                    SpeechRecognizer.ContinuousRecognitionSession.ResultGenerated += (s, e) =>
                    {
                        if (e.Result.RawConfidence >= 0.5f)
                        {
                            Action handler;
                            if (cortanaCommands.TryGetValue(e.Result.Text, out handler))
                            {
                                Application.InvokeOnMain(handler);
                            }
                        }
                    };
                    return(true);
                }
                return(false);
            }
            catch (Exception exc)
            {
                LogSharp.Warn("RegisterCortanaCommands: " + exc);
                return(false);
            }
        }
Beispiel #2
0
		public void Clean()
		{
			IntPtr[] handles;

			lock (knownObjects)
				handles = knownObjects.OrderBy(t => GetDisposePriority(t.Value)).Select(t => t.Key).ToArray();

			foreach (var handle in handles)
			{
				ReferenceHolder<RefCounted> refHolder;
				lock (knownObjects)
					knownObjects.TryGetValue(handle, out refHolder);
				refHolder?.Reference?.Dispose();
			}
			LogSharp.Warn($"RefCountedCache objects alive: {knownObjects.Count}");

			//knownObjects.Clear();
		}