Выполненный GC.Collect синхронно

В DB2 date не имеет временной составляющей.

Итак, попробуйте to_timestamp():

select to_timestamp('10-Feb-2019 11:20', 'DD-Mon-yyyy hh24:mi') 

Обратите внимание, что секунды не указаны в строковом значении, поэтому их не должно быть в спецификации формата. Тем не менее, окончательное значение будет иметь секунды - все установлено на ноль.

15
задан Joe White 14 April 2009 в 18:23
поделиться

4 ответа

Финализаторы запускаются в выделенном высокоприоритетном фоновом потоке. Исходя из предыстории вашего поста, я понял, что вы можете просто сделать

GC.Collect();
GC.WaitForPendingFinalizers();

Collect () запланирует любые некорневые экземпляры для финализации, а затем поток будет ждать завершения потока финализатора.

14
ответ дан 1 December 2019 в 03:15
поделиться

Вы можете использовать GC.RegisterForFullGCNotification , запускать полную коллекцию с помощью GC.Collect (GC.MaxGeneration) , а затем методы GC.WaitForFullGCComplete и GC.WaitForPendingFinalizers , но убедитесь, что используете это только в своих тестах, они не должны использоваться для производства код.

5
ответ дан 1 December 2019 в 03:15
поделиться

Финализаторы всегда выполняются в отдельном потоке независимо от того, используете ли вы одновременный сборщик мусора или нет. Если вы хотите убедиться, что финализаторы были запущены, попробуйте вместо этого GC.WaitForPendingFinalizers .

2
ответ дан 1 December 2019 в 03:15
поделиться

Более простой / лучший способ сделать это может состоять в использовании насмешек и проверки ожидания, что Dispose был вызван явно.

Пример использования RhinoMocks

public void SomeMethodTest()
{
     var disposable = MockRepository.GenerateMock<DisposableClass>();

     disposable.Expect( d => d.Dispose() );

     // use constructor injection to pass in mock `DisposableClass` object
     var classUnderTest = new ClassUnderTest( disposable ); 

     classUnderTest.SomeMethod();

     disposable.VerifyAllExpectations();
}

Если метод должен создать, а затем утилизировать объект, то я бы использовал и внедрил фабричный класс, способный создать фиктивный объект. В приведенном ниже примере на заводе используется заглушка, поскольку это не то, что мы проверяем в этом тесте.

public void SomeMethod2Test()
{
     var factory = MockRepository.Stub<DisposableFactory>();
     var disposable = MockRepository.GenerateMock<DisposableClass>();

     factory.Stub( f => f.CreateDisposable() ).Return( disposable );         
     disposable.Expect( d => d.Dispose() );

     // use constructor injection to pass in mock factory
     var classUnderTest = new ClassUnderTest( factory ); 

     classUnderTest.SomeMethod();

     disposable.VerifyAllExpectations();
}
2
ответ дан 1 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: