I feel your pain. Been there, and still am there on and off.
Here's my plan. I decided to give a meal, if ds tried it and didn't like it, he could have toast and spread (or if it was something I he clearly disliked having tried I might do a quick alternative, altho I didn't tell him that before). If he didn't try it, or if he decided he wsan't eating his favourite food because it was Tuesday type thing, he could have bread and butter.
Or get down. Meal in bin. Game over.
Subsequent whining is politely told why I don't want to hear him whine, and then if he keeps it up to BAFTA standards I tell him i'm not listening to him whining and I put him in the hall.
Overall this has improved things. I then found as he could eat I became this cheerleader during mealtimes with a constant stream of encouragement and praise, or negotiations.
So I decided to shut up. I give him the food, and nicely tell him I want him to try it. Currently he is a master at having a tiny bite at something to show me he's tried it, but I'm happy with small gains. (Mealtimes aren't in silence, I have a supply of inane chat to keep us going!)
The other thing I did, which was a tip from hear, wsa to dispense with puddings. Fruit or yoghurt to follow, in theory if he's eaten everything, but in reality if he's made a good effort.
We also eat together as a family whenever DH can get home on time.
Basically what ScreaminEagle says about backing off and taking the stress out etc, but a lot more waffly.