Меня удивило, что удобного класса System.Threading.Timer нет в библиотеках Profile 78. Чтобы использовать этот класс, я создал еще один PCL, нацеленный на платформу 4.0, и написал простую оболочку (как было предложено в одном сообщении в блоге):
public class PCLTimer
{
private Timer timer;
private Action<object> action;
public PCLTimer (Action<object> action, object state, int dueTimeMilliseconds, int periodMilliseconds)
{
this.action = action;
timer = new Timer (PCLTimerCallback, state, dueTimeMilliseconds, periodMilliseconds);
}
private void PCLTimerCallback (object state)
{
action.Invoke (state);
}
public bool Change (int dueTimeMilliseconds, int periodMilliseconds)
{
return timer.Change (dueTimeMilliseconds, periodMilliseconds);
}
}
Теперь я могу ссылаться на эту библиотеку 4.0 и использовать PCLTimer в основной библиотеке PCL. Но когда я пытаюсь собрать свой основной Android-проект, я получаю следующие предупреждения:
Warning CS1684: Reference to type 'System.Threading.Timer' claims it is defined in 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78\mscorlib.dll', but it could not be found (CS1684) (Prototype.Core)
Warning MSB3247: Found conflicts between different versions of the same dependent assembly. (MSB3247) (Prototype.Droid)
Как правильно избавиться от этих предупреждений?