}
remove
{
+ if (Thread.CurrentThread.ManagedThreadId != 1)
+ {
+ Tizen.Log.Error("NUI", "current threadID : " + Thread.CurrentThread.ManagedThreadId);
+
+ StackTrace st = new StackTrace(true);
+ for (int i = 0; i < st.FrameCount; i++)
+ {
+ StackFrame sf = st.GetFrame(i);
+ Tizen.Log.Error("NUI", " Method " + sf.GetMethod());
+ }
+ }
+
_timerTickEventHandler -= value;
- if (_timerTickEventHandler == null && TickSignal().Empty() == false)
+ if (_timerTickEventHandler == null && isTickSignalConnected)
{
- TickSignal().Disconnect(_timerTickCallbackOfNative);
+ var signal = TickSignal();
+ if (signal?.SwigCPtr.Handle == IntPtr.Zero) { signal = null; }
+ signal?.Disconnect(_timerTickCallbackOfNative);
+ signal?.Dispose();
+ isTickSignalConnected = false;
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
}
}
/// <since_tizen> 3 </since_tizen>
protected override void Dispose(DisposeTypes type)
{
+ if (Thread.CurrentThread.ManagedThreadId != 1)
+ {
+ Tizen.Log.Error("NUI", "current threadID : " + Thread.CurrentThread.ManagedThreadId);
+
+ StackTrace st = new StackTrace(true);
+ for (int i = 0; i < st.FrameCount; i++)
+ {
+ StackFrame sf = st.GetFrame(i);
+ Tizen.Log.Error("NUI", " Method " + sf.GetMethod());
+ }
+ }
+
NUILog.Debug($"(0x{swigCPtr.Handle:X}) Timer.Dispose(type={type}, disposed={disposed})");
- if (this != null && _timerTickCallbackDelegate != null)
+ if (this != null && _timerTickCallbackDelegate != null && isTickSignalConnected)
{
- TickSignal().Disconnect(_timerTickCallbackOfNative);
+ var signal = TickSignal();
+ if (signal?.SwigCPtr.Handle == IntPtr.Zero) { signal = null; }
+ signal?.Disconnect(_timerTickCallbackOfNative);
+ signal?.Dispose();
+ isTickSignalConnected = false;
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
if (disposed)