示例#1
0
        public async Task Refresh_ForCharacteristicsHeightSpeedNotFound_DoesNotNotify( )
        {
            var sut = CreateSut( );

            ServiceWrapper.Uuid
            .Returns(sut.GattServiceUuid);

            sut.Initialize <ReferenceOutput> ( );

            Wrappers.Remove(ReferenceOutput.HeightSpeed);

            await sut.Refresh( );

            _subjectHeightSpeed.DidNotReceive( )
            .OnNext(Arg.Any <RawValueChangedDetails> ( ));
        }
示例#2
0
 /// <summary>
 /// ComWrapper クラスが管理しているラッパークラスのコレクションからラッパークラスを取り出します。
 /// コレクションに無い場合は、CreateComWrapper メソッドを呼び出し、インスタンスを作成します。
 /// </summary>
 /// <param name="comObject">ラップする COM オブジェクト。</param>
 /// <returns>comObject に対応したラッパークラスのインスタンス。</returns>
 protected ComWrapper GetComWrapper(object comObject)
 {
     using (SafeComObject key = new SafeComObject(comObject)) {
         if (Wrappers.TryGetValue(key, out ComWrapper comWrapper))
         {
             if (!comWrapper.IsDisposed)
             {
                 return(comWrapper);
             }
             else
             {
                 Wrappers.Remove(comWrapper);
             }
         }
         ComWrapper wrapper = CreateComWrapper(key.Target, key.TypeName);
         wrapper.Root   = Root;
         key.OwnsHandle = false; // comObject を解放しない
         return(wrapper);
     }
 }
示例#3
0
 /// <summary>
 /// 使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。
 /// </summary>
 /// <param name="disposing">マネージ リソースとアンマネージ リソースの両方を解放する場合は true。アンマネージ リソースだけを解放する場合は false。</param>
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (HasSinkObjects)
         {
             foreach (var so in SinkObjects)
             {
                 so.Dispose();
             }
         }
         Wrappers.Remove(this);
         if (wrappers != null)
         {
             // 新しいものから Dispose
             var array = wrappers.ToList();
             for (int i = array.Count - 1; i >= 0; i--)
             {
                 array[i].Dispose();
             }
         }
     }
     ComObject.Dispose();
 }