Asynchronously accepting multiple client connections without impacting main thread
Some quick remarks:


Always add access modifiers.
You're not using string[] args, so remove it.
I'm not a fan of private properties, certainly not when they could be fields (and thus they should not have getters/setters). private TcpListener server { get; }, private ConcurrentBag&lt;TcpClient&gt; _clients { get; set; }
Be consistent in naming: _clients starts with an underscore, which is a naming convention usually used for fields, but server doesn't start with an underscore.
Properties should be PascalCase: public List&lt;TcpClient&gt; clients. I feel the same applies to private ones (previous remark).
No underscores in names (with the exception of an underscore prefix for fields, of course): Game_Server.