lock の中で await は使用できない。
async void function1 ()
{
	lock(lockobj)
	{
		Console.WriteLine ( "enter function" );
		await function2 ();
		Console.WriteLine ( "function done" );
	}
}
Task function2 ()
{
	return Task.Delay ( 2000 );
}
関連するエラー。
CS1996
lock ステートメントの本体で待機することはできません。
CS4033
'await' 演算子は、非同期メソッド内でのみ使用できます。
このメソッドに 'async' 修飾子を指定し、
戻り値の型を 'Task' に変更することを検討してください。	
ロック方法。
var lockobj = new System.Threading.SemaphoreSlim(1, 1);
await lockobj .WaitAsync();
lockobj.Release();

@see
非同期:awaitを含むコードをロックするには?(SemaphoreSlim編)[C#、VB]:.NET TIPS - @IT