When I get listItemId it return -1 because I use CreateTask Activity in loop activity but I can use below method for get next ID of task in CreateTask method
taskId = GetNextAvailableIdFromList(workflowProperties.Site, workflowProperties.TaskListId);
public static int GetNextAvailableIdFromList(SPSite site, Guid listId)
{
int NextAvailableId = -1;
if (site.WebApplication.ContentDatabases.Count > 0)
{
string DBConnString = site.WebApplication.ContentDatabases[0].DatabaseConnectionString;
SqlConnection con = new SqlConnection(DBConnString);
try
{
con.Open();
SqlCommand com = con.CreateCommand();
com.CommandText = String.Format("select tp_NextAvailableId from AllLists where tp_ID = '{0}'", listId.ToString());
NextAvailableId = (int)com.ExecuteScalar();
}
finally
{
con.Close();
}
}
return NextAvailableId;
}