- 使用 ShowDialog (modal) 他可能崩溃
- 使用多线程,如果线程异常,他不会为你报告异常 他可能崩溃
- 如果对窗口资源使用了Dispose,那么在下一次打开任意一个具有模态属性的窗口时 他可能崩溃(2021)
2021.3.28 : 2022版本发布已修复
以上三条经过摸索推测:
模态框的本质是禁用父窗体,当弹出模态框后,MAX后台扫描父窗体发起禁用操作,但未对资源做可用检测。
在这种情况下,max主动要求崩溃,事实上功能依然完好,利用后台线程,你依然可以利用代码打开模型,甚至渲染
global LoadingForm
fn loading =
(
try LoadingForm.Dispose() catch() -- crash
-- try LoadingForm.Close() catch() -- ok
--
LoadingForm = DotnetObject "MaxCustomControls.MaxForm"
LoadingForm.Size = (DotnetObject "System.Drawing.Size" 500 600)
LoadingForm.StartPosition = (DotnetClass "System.Windows.Forms.FormStartPosition").CenterScreen
--
MaxHwndPtr = (DotNetObject "System.IntPtr" (Windows.GetMaxHwnd()))
LoadingForm.Show((DotNetObject "System.Windows.Forms.NativeWindow").FromHandle MaxHwndPtr)
)
loading()
sleep 0.2
loading()
messageBox "crash!"