Best way for wait to work with C# in Appium Framework

The way I am currently doing it is not really helpful but I think would only need a few changes to work properly I cant figure those out. Expected Condition as its obsolete except for very old Nugget code. The Id part will not always be the same so in the tests I write: WaitForElementVisible(SiteElementsbyInfo.LoggingIn(), 3);
The Wait does not seem to wait and the 3 does not work only the one from below base code appears to work.
Then I use the below as base code
private void WaitForElementVisible(By by, int timeOutInSeconds)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
try
{
var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(1));

                var element = wait.Until(c => c.FindElement(By.Id("content-section")));
            }
            catch (Exception)
            {
                Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed.Seconds);
            }
            finally
            {
                stopwatch.Stop();