Emr*_*GEN 13 c# multithreading task ambiguous
当我尝试生成项目时,将显示以下错误消息.
以下方法或属性之间的调用不明确:'System.Threading.Tasks.Task.Run(System.Action)'和'System.Threading.Tasks.Task.Run(System.Func)'
我怎样才能解决这个问题?
public static class MaintananceManager
{
private static ThreadSafeSocialMediaList<Post> PostList = new ThreadSafeSocialMediaList<Post>();
private static ThreadSafeSocialMediaList<SocialUser> SocialUserList = new ThreadSafeSocialMediaList<SocialUser>();
private static List<IPersistentProvider> providers = new List<IPersistentProvider>();
private const int CACHESIZE = 1000;
static MaintananceManager()
{
providers.Add(new SqlServerProvider());
Task.Run(startMaintaining);
}
public static void PersistPosts(IEnumerable<Post> posts)
{
PostList.AddRange(posts);
}
public static void PersistSocialUsers(IEnumerable<SocialUser> users)
{
SocialUserList.AddRange(users);
}
public static SocialUser GetSocialUser(SocialMediaType mediaType,string socialMediaId)
{
foreach(var provider in providers)
{
try
{
return provider.GetSocialUser(mediaType, socialMediaId);
}
catch
{
}
}
return null;
}
private static void persistPosts()
{
var liste = PostList.Flush();
foreach(var provider in providers)
{
provider.SavePosts(liste);
}
}
private static void persistUsers()
{
var liste = SocialUserList.Flush();
foreach (var provider in providers)
{
provider.SaveSocialUsers(liste);
}
}
private static void startMaintaining()
{
while(true)
{
if (PostList.Count > CACHESIZE)
persistPosts();
if (SocialUserList.Count > CACHESIZE)
persistUsers();
Thread.Sleep(60000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Gra*_*ICA 30
有几种方法可以将其作为有效传递Action:
Task.Run(() => startMaintaining());
Task.Run((Action)startMaintaining);
Task.Run(new Action(startMaintaining));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5686 次 |
| 最近记录: |