我正在构建一个包含 F# 文件的项目,在构建过程中,第 39 行出现错误:
此表达式应具有 Async<'a> 类型,但此处具有类型 DispatcherOperation
open System
open System.Collections.Generic
open System.Collections.ObjectModel
open System.Linq
open System.Net
open System.Reactive.Disposables
open System.Runtime.CompilerServices
open System.Threading
open System.Windows
open System.Windows.Threading
open Microsoft.Practices.Unity
type IActivityContext<'TResult> = interface
abstract container: IUnityContainer
abstract Success: result:'TResult -> unit
abstract Error: error:Exception -> unit
abstract Cancel: unit -> unit
abstract RegisterCancellationCallback: callback:Action->IDisposable
end
[<Extension>]
type ActivityExtensions private() = class
[<Extension>]
static member StartViewActivity<'TResult>(container: IUnityContainer, callback: Action<IActivityContext<'TResult>>)= async{
let! ct = Async.CancellationToken
return! Async.FromContinuations(fun (success, error, cancel) …Run Code Online (Sandbox Code Playgroud) 我对F#了解不多,但我正在研究一个项目(在C#上),我必须在预编写的F#代码中进行一些更改.
我想声明一个公共对象然后在本地使用这个对象.(就像我们在C#中所做的那样).
class abc
{
public SubscriptionManager subman = null; // object of class SubscriptionManager
public void DoSomething()
{
subman = new SubscriptionManager();
}
}
Run Code Online (Sandbox Code Playgroud)
像这样的东西.
我可以在F#中做同样的事情吗?
我正在使用 Onvif 设备管理器 dll( onvif.services、discovery、session 和 utils.async、common、diagnostic、fsharp dll )实现 ONVIF。
到目前为止,我能够发现 onvif 设备,获取范围(设备信息)及其配置文件,以流式传输视频并实现 ptz 控制。
现在我正在实现事件订阅,但我无法订阅任何特定事件。
这是我的事件订阅代码。我不知道下一步该做什么。
OnvifParam deviceparam = ONVIFDevices[listBox1.SelectedIndex];
deviceparam.Account = new NetworkCredential { UserName = "admin", Password = "admin" };
var sessionFactory = new NvtSessionFactory(deviceparam.Account);
int listenport = 8085;
string EventListeningPort = null;
int.TryParse(EventListeningPort, out listenport);
Uri uri = new Uri(deviceparam.Uris[0].ToString());
deviceparam.URL = uri.ToString();
Profile[] profiles = null;
var f = sessionFactory.CreateSession(uri);
profiles = f.GetProfiles().RunSynchronously();
deviceparam.Profiles = profiles;
OdmSession o = new OdmSession(f);
var subs = o.GetBaseEvents(listenport).Subscribe(); …Run Code Online (Sandbox Code Playgroud)