2014-09-26 55 views
0

我用这mixpanel .NET项目.NET mixpanel项目时/等待:收到错误消息尝试使用异步调用方法时使用

https://cndrsn.wordpress.com/2014/04/

在页面上有呼叫的例子在MixpanelClient.GetCurrentClient()使用的await但我当这样做收到此错误:

不能等待 'Mixpanel.MixpanelClient'

这里是我的方法:

public async Task<string> TrackMixPanelLoggedIn(int userId) 
    { 
     string token = "mytoken!"; 
     MixpanelClient _client = await MixpanelClient.GetCurrentClient(); 
     TrackingEvent evt = new TrackingEvent("User logged in"); 
     evt.Properties = new TrackingEventProperties(token); 
     evt.Properties.DistinctId = userId.ToString(); 
     _client.Track(evt); 
    } 

在此先感谢

+2

我假设'MixpanelClient.GetCurrentClient()'不是一个异步方法吗? – DavidG 2014-09-26 08:01:05

+0

'MixpanelClient.GetCurrentClient()'返回什么? 'async \ await'不是使所有事情都异步的神奇关键字。 – 2014-09-26 08:08:42

+0

但是MixPanelClient的作者在他的例子中使用它: MixpanelClient 主要的类是MixpanelClient,它是允许你跟踪事件和配置文件更新的小家伙。此外,如果发送元素失败,客户端将自动将其保存到本地,以便稍后自动将其作为批量发送。如何检索它的一个实例: 这种方法在第一次调用时是可以等待的,客户端会检查是否有任何未发送的元素,如果是,则发送它们。 示例来自:https://cndrsn.wordpress.com/2014/04/ – 2014-09-26 08:10:21

回答

1

它看起来像包的作者有不正确的文档(或者还没有公布正确的代码?)

MixpanelClient元数据是这样的,你可以看到,这里没有任何东西可以是await ed。

public sealed class MixpanelClient 
{ 
    public string UserAgent { get; set; } 
    public static DateTime ConvertToDateTime(long unixDateTicks); 
    public static string ConvertToMixpanelDate(DateTime dateTime); 
    public void CreateAlias(string token, string originalId, string newId); 
    public static MixpanelClient GetCurrentClient(); 
    public void SaveElement(MixpanelEntity element); 
    public static long ToEpochTime(DateTime date); 
    public void Track(MixpanelEntity element); 
    public void TrySendLocalElements(); 
} 
+0

好的谢谢你清理这个。有没有什么办法可以调用这些方法而不会阻塞我的asp.net应用程序中的主线程。 – 2014-09-26 08:30:57

+0

这是一个不同的问题,但在别处已经解决了很多次。 – DavidG 2014-09-26 08:32:16

相关问题