gpt4 book ai didi

wpf - F#dispatcher.invoke 和委托(delegate)方法

转载 作者:行者123 更新时间:2023-12-03 04:38:47 24 4
gpt4 key购买 nike

我寻找这个问题的解决方案很长一段时间没有成功。

我正在将一些 C# 代码移植到 F#,并且正在努力使用 WPF 元素的 Dispatcher.Invoke。由于我是 F# 的菜鸟,所以我唯一确定的是问题出在椅子和键盘之间。

这是我的 C# 代码:

foreach (var k  in ChartList.Keys)            
{
ChartList[k].Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
ChartList[k].Width = area.Width / totalColsForm;
ChartList[k].Height = area.Height / totalRowsForm;
ChartList[k].Left = area.X + ChartList[k].Width * currentCol;
ChartList[k].Top = area.Y + ChartList[k].Height * currentRow;
ChartList[k].doShow();
}
));
}

我正在努力解决的部分是新的 Action(delegate() ... )。编译器不喜欢我翻译它的任何尝试。

这段代码在 F# 中的翻译是什么?

最佳答案

Invoke 方法有几个重载,因此,如果操作内有一些不完全正确的内容,则可能会出现一些奇怪的错误,因为类型检查器不知道要调用哪个重载。我刚刚尝试过,效果很好:

open System
open System.Windows.Controls
open System.Windows.Threading

let b = Button()
b.Dispatcher.Invoke(
DispatcherPriority.Normal,
Action(fun () ->
b.Content <- "foo"
)) |> ignore

关于wpf - F#dispatcher.invoke 和委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15228079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com