Skip to content

Commit e77129b

Browse files
committed
fix: 修正點擊 BtnCopy 時會發生 InvalidCastException 例外的問題
修正點擊 BtnCopy 時會發生 InvalidCastException 例外的問題。
1 parent 0f81c18 commit e77129b

1 file changed

Lines changed: 26 additions & 12 deletions

File tree

src/InputBox/Core/Input/GameInputGamepadController.cs

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,14 +1110,17 @@ public Task VibrateAsync(ushort strength, int milliseconds = 60)
11101110
// 優化:強度為 0 時直接停止並回傳,減少 GC 分配(Fast-path)。
11111111
if (strength == 0)
11121112
{
1113-
try
1113+
Task.Run(() =>
11141114
{
1115-
dev.SetRumbleState(new GameInputRumbleParams());
1116-
}
1117-
catch
1118-
{
1119-
// 忽略失效設備的錯誤。
1120-
}
1115+
try
1116+
{
1117+
dev.SetRumbleState(new GameInputRumbleParams());
1118+
}
1119+
catch
1120+
{
1121+
// 忽略失效設備的錯誤。
1122+
}
1123+
});
11211124

11221125
return Task.CompletedTask;
11231126
}
@@ -1323,14 +1326,25 @@ private Task StopPollingAsync()
13231326
/// </summary>
13241327
public void StopVibration()
13251328
{
1326-
try
1329+
GameInputDevice? dev = _device;
1330+
1331+
if (dev == null)
13271332
{
1328-
_device?.SetRumbleState(new GameInputRumbleParams());
1333+
return;
13291334
}
1330-
catch
1335+
1336+
// 將 COM 呼叫推入 MTA 背景執行緒,避免在 STA (UI) 執行緒引發 InvalidCastException
1337+
Task.Run(() =>
13311338
{
1332-
// 忽略
1333-
}
1339+
try
1340+
{
1341+
dev.SetRumbleState(new GameInputRumbleParams());
1342+
}
1343+
catch
1344+
{
1345+
// 忽略
1346+
}
1347+
});
13341348
}
13351349

13361350
/// <summary>

0 commit comments

Comments
 (0)